Linux 进程间通信(1): 管道

1. 管道局限性:

(1) 半双工;(若模拟全双工,可以使用两个管道,即,proc1–>proc2一条管道,proc2–>proc1一条管道)

(2) 只能在具有公共祖先的进程之间使用;

 

2. 管道创建函数:

经由filedes返回两个文件描述符:filedes[0]为读端,filedes[1]为写端;

 

3. 惯用方式:

由于单个进程中的管道并没有任何用户,所以,通常调用pipe的进程会接着调用fork,这样就创建了从父进程到子进程(或相反)的IPC通道;

比如为了创建从子进程到父进程的管道,子进程关闭读端fd[0],父进程关闭写端fd[1];

 

4. 一端关闭影响:

(1) 读一个写端已经被关闭的管道,数据被读取完毕后,会读到一个文件结束符,read返回0;

(2) 写一个读端已经被关闭的管道,会产生SIGPIPE信号;

 

5. 管道测试:从父进程向子进程传递数据

 

本文链接:Linux 进程间通信(1): 管道

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注