
IPC
文章平均质量分 72
lamdoc
这个作者很懒,什么都没留下…
展开
-
管道
1. 管道 是单向的,先进先出的。它把一个进程的输出和另一个进程的输入连接在一起。一个进程(写进程)在管道的尾部写入数据,另一个进程(读进程)从管道的头部读出数据。数据被一个进程读出后,将被从管道中删除,其他读进程将不能再读到这些数据。管道提供了简单的流控制机制:a. 进程试图读空管道时,进程将阻塞。b. 管道满时,进程再试图向管道写入数据时,进程也将阻塞。2. 管原创 2012-06-12 22:04:31 · 383 阅读 · 0 评论 -
shell中创建子进程
shell中创建子进程只要用 & 操作符就行了,表示在后台运行.可以利用wait 同步所有子进程结束.实例代码如下:#!/bin/shsleep_1(){ sleep 10000000}i=1for i in `seq 10`do echo "$i" multiply=`expr $i \* 10` echo原创 2013-09-09 11:39:44 · 1917 阅读 · 0 评论 -
进程间通信概念---IPC
进程间通信 --- IPC1. 进程间通信的目的a. 数据传输: 一个进程需要将他的数据发送给另一个进程b. 资源共享: 多个进程之间共享同样的资源c. 通知事件: 一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件。d. 进程控制: 有些进程希望完全控制另一个进程的执行(如debug进程),此时控制进程希望能拦截另一个进程的所有操作,并能够及时原创 2012-06-10 18:01:08 · 477 阅读 · 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 · 523 阅读 · 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 · 482 阅读 · 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 · 541 阅读 · 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 · 6267 阅读 · 0 评论 -
消息队列
1. unix早期通信机制中的信号能够传送的信息量有限,管道则只能传送无格式字节流,这远远是不够的。消息队列(也叫报文队列)客服了这些缺点:消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式。进程可以按照一定的规则向消息队列中添加新消息;另一些进程可以从消息队列中读走消息。2. 消息队列分类: 目前主要有两种消息队列:POSIX消息队列 和 系统V消息队列。原创 2012-06-14 21:27:50 · 403 阅读 · 0 评论 -
共享内存
1. 共享内存 是被多个进程共享的异步分物理内存。共享内存时进程间共享数据最快的一种方法,一个进程向共享内存区域内写入数据,共享这个内存区域的所有进程就可以立刻看到其中的内容。2. 共享内存的实现,分为两个步骤:a. 创建共享内存,使用 shmget 函数。b. 映射共享内存,将这段创建的共享内存映射到具体的进程空间去,使用 shmat 函数。3. 创建共享内存int sh原创 2012-06-13 09:11:46 · 348 阅读 · 0 评论 -
信号-signal 的基本概念
1. 信号(signal)机制是Unix系统中最为古老的进程间通信机制。很多条件可以产生一个信号:a. 当用户按下某些按键时,可以产生信号。b. 硬件异常产生信号:如除数为0,无效的存储访问等等。这些情况通常由硬件检测到,将其通知内核。然后内核产生适当的信号通知进程。例如:内核对正在访问一个无效存储区的进程产生一个SIGSEGV信号。c. 进程用 kill函数 将信号发送给原创 2012-06-13 08:31:00 · 485 阅读 · 0 评论 -
信号量 - semaphore
1. 信号量(semaphore)主要用于保护临界资源。进程可以根据它判断是否能访问某些共享资源。信号量除了用于访问控制外,还可用于进程同步,也就是进程间通信。2. 信号量分类:a. 二值信号量: 信号量的值只能取0或1,类似于互斥锁mutex,但两者又不同:mutex 与 二值信号量的区别:信号量强调共享资源,只要共享资源可用,其他进程同样可以修改信号量的值;原创 2012-06-14 21:56:30 · 369 阅读 · 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 · 602 阅读 · 0 评论