摘要: Linux进程间通信主要方法有:管道,命名管道,消息队列,信号量,共享内存,还有信号和套接字Socket。下面先简单介绍下管道:半双工的通信方式,数据只能单方向流动,而且只能在父子进程间使用。数据只能由一个进程流向另一个进程(其中一个写管道,一个读管道),如果要进行全双工通信,需要建立两个管道。管道还有一些限制条件,比如管道的缓冲区大小是受限制的。管道所传送的是无格式的字节流,这就要求发送和接受方需要事先约定好数据的格式。管道的创建#include <unistd.h>int pipe(int fd[2])一端只能用于读,由文件描述符fd[0]表示。另一端只能写,由文件描述符fd[ 阅读全文
posted @ 2012-06-25 23:21 鼻子很帅的猪 阅读(278) 评论(0) 推荐(0) 编辑
摘要: POSIX标准定义了数据类型sigset_t来表示信号集。 sigprocmask函数 每一个进程都有一个信号屏蔽码,它规定了当前阻塞而不能递送给该进程的信号集。函数sigprocmask可以检测或者更改进程的信号屏蔽码。int sigprocmask(int how, const sigset_t * set, sigset_t * oldset);如果oldset为非空指针,则该进程之前的信号屏蔽码通过oldset返回。如果set为非空指针,则该函数将根据how来修改信号当前的屏蔽码,how的取值如下:(1)SIG_BLOCK:将进程新的信号屏蔽码设置成为当前信号屏蔽码和set指向信... 阅读全文
posted @ 2012-06-25 11:03 鼻子很帅的猪 阅读(150) 评论(0) 推荐(0) 编辑