
IPC
文章平均质量分 72
lamdoc
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
管道
1. 管道 是单向的,先进先出的。它把一个进程的输出和另一个进程的输入连接在一起。 一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。 数据被一个进程读出后,将被从管道中删除,其他读进程将不能再读到这些数据。 管道提供了简单的流控制机制: a. 进程试图读空管道时,进程将阻塞。 b. 管道满时,进程再试图向管道写入数据时,进程也将阻塞。 2. 管原创 2012-06-12 22:04:31 · 389 阅读 · 0 评论 -
shell中创建子进程
shell中创建子进程只要用 & 操作符就行了,表示在后台运行. 可以利用wait 同步所有子进程结束. 实例代码如下: #!/bin/sh sleep_1(){ sleep 10000000 } i=1 for i in `seq 10` do echo "$i" multiply=`expr $i \* 10` echo原创 2013-09-09 11:39:44 · 1933 阅读 · 0 评论 -
进程间通信概念---IPC
进程间通信 --- IPC 1. 进程间通信的目的 a. 数据传输: 一个进程需要将他的数据发送给另一个进程 b. 资源共享: 多个进程之间共享同样的资源 c. 通知事件: 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。 d. 进程控制: 有些进程希望完全控制另一个进程的执行(如debug进程),此时控制进程希望能拦截另一个进程的所有操作,并能够及时原创 2012-06-10 18:01:08 · 489 阅读 · 0 评论 -
pthread 编程手册
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void*(*start_routine)(void*), void *arg);参数: tid: 用于返回新创建线程的线程号; start_routine: 是线程函数指针,线程从这个函数开始独立地运行; arg: 是原创 2013-08-27 13:39:22 · 536 阅读 · 0 评论 -
pthread_attr_t
Posix线程中的线程属性pthread_attr_t, 主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。 在pthread_create中,把第二个参数设置为NULL的话,将采用默认的属性配置。 pthread_attr_t 的主要属性的意义如下: __detachstate: 表示新线程是否与进程中其他线程脱离同步. 如果设置为PTHREAD_CREATE_原创 2013-08-27 14:14:23 · 492 阅读 · 0 评论 -
popen()_pclose()
头文件: #include 函数定义: FILE * popen ( const char * command , const char * type ); int pclose ( FILE * stream ); popen() 函数通过创建一个管道,调用 fork 产生一个子进程,在shell中执行“command ”命令来开启一个进程。 这个进程必须由 pclose() 函数原创 2013-05-27 17:36:43 · 550 阅读 · 0 评论 -
sem_open() sem_wait() sem_post()
这三个函数是在应用层使用信号量的操作函数, 具体作用如下: 1 .sem_open() 函数说明:创建并初始化有名信号灯。 头文件:#include 函数原型: sem_t *sem_open(const char *name,int oflag,mode_t mode,unsigned int value);参数: name 信号灯的外部名字 oflag 选择创建或打开一原创 2013-04-11 12:40:08 · 6343 阅读 · 0 评论 -
消息队列
1. unix早期通信机制中的信号能够传送的信息量有限,管道则只能传送无格式字节流,这远远是不够的。 消息队列(也叫报文队列)客服了这些缺点: 消息队列就是一个消息的链表。 可以把消息看作一个记录,具有特定的格式。 进程可以按照一定的规则向消息队列中添加新消息;另一些进程可以从消息队列中读走消息。 2. 消息队列分类: 目前主要有两种消息队列:POSIX消息队列 和 系统V消息队列。原创 2012-06-14 21:27:50 · 410 阅读 · 0 评论 -
共享内存
1. 共享内存 是被多个进程共享的异步分物理内存。 共享内存时进程间共享数据最快的一种方法,一个进程向共享内存区域内写入数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。 2. 共享内存的实现,分为两个步骤: a. 创建共享内存,使用 shmget 函数。 b. 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用 shmat 函数。 3. 创建共享内存 int sh原创 2012-06-13 09:11:46 · 361 阅读 · 0 评论 -
信号-signal 的基本概念
1. 信号(signal)机制是Unix系统中最为古老的进程间通信机制。 很多条件可以产生一个信号: a. 当用户按下某些按键时,可以产生信号。 b. 硬件异常产生信号:如除数为0,无效的存储访问等等。 这些情况通常由硬件检测到,将其通知内核。然后内核产生适当的信号通知进程。 例如:内核对正在访问一个无效存储区的进程产生一个SIGSEGV信号。 c. 进程用 kill函数 将信号发送给原创 2012-06-13 08:31:00 · 496 阅读 · 0 评论 -
信号量 - semaphore
1. 信号量(semaphore)主要用于保护临界资源。 进程可以根据它判断是否能访问某些共享资源。 信号量除了用于访问控制外,还可用于进程同步,也就是进程间通信。 2. 信号量分类: a. 二值信号量: 信号量的值只能取0或1,类似于互斥锁mutex,但两者又不同: mutex 与 二值信号量的区别: 信号量强调共享资源,只要共享资源可用,其他进程同样可以修改信号量的值;原创 2012-06-14 21:56:30 · 378 阅读 · 0 评论 -
nanosleep()
函数原型 int nanosleep(const struct timespec *req, struct timespec *rem);d.h 头文件 #include 参数形式 struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ }; 功能 这个函数功能是暂停某原创 2013-09-22 10:37:13 · 615 阅读 · 0 评论