《TCP/IP网络编程》 尹圣雨 P183~P193
进程间通信的基本概念
进程间通信 Inter Process Communication意味着两个不同进程间可以交换数据。
只要有2个进程可以同时访问的内存空间,就可以通过此空间交换数据。
进程具有完全独立的内存结构。fork()创建的子进程也不会与父进程共享内存空间。
通过管道实现进程间通信
为完成进程间通信,需要创建管道。管道并非属于进程的资源,而是和套接字一样,属于操作系统(也就不是fork函数的复制对象)。所以,两个进程通过操作系统提供的内存空间进行通信。
#include<unistd.h>
int pipe(int filedes[2]);
成功时返回0,失败时返回-1
filedes[0]:通过管道接收数据时使用的文件描述符,即管道出口。
filedes[1]:通过管道传输数据时使用的文件描述符,即管道入口。
通过管道进程进程间双向通信
向管道传递数据时,先读的进程会把数据取走。
使用两个管道可以避免程序流程的预测或控制。