父子进程可以通过管道进行数据交互,一个管道只能有一个数据流向,要实现双工通信,可以使用两个管道实现。
管道工作原理:
- 向内核申请管道描述符
- 父子进程fork()后均有该管道资源,但处于不同内存地址
- 通过对描述符读写实现通信
数据交互图:
单工通信代码实现:
1 #include <stdio.h> 2 #include <string.h> 3 #include <unistd.h> 4 #include <iostream> 5 6 using namespace std; 7 8 const int MAX_BUFFSIZE = 1024; 9 10 int main() 11 { 12 int pipe_fd[2]; 13 pid_t pid; 14 char buff[MAX_BUFFSIZE]; 15 16 memset(buff,'