管道是进程间通信的一种工具。
1、管道是半双工的,建立管道后,只能由一个进程向另一个进程传数据。
2、管道只能在有公共祖先的两个进程之间使用。父进程建立管道后,fork,这个管道就能在父子进程之间调用了。
管道通过pipe函数创建。
pipe(int fd[2]);
要打开两个文件,文件描述符放在fd里面。写数据时往fd1里面写,读数据时从fd0里面读。
如果是父进程往子进程传数据,父进程的fd0关闭,写进fd1里面去。子进程的fd1关闭,从fd0里面读数据。
#include<unistd.h> #include <fcntl.h> #include<memory.h> int main(){ int fd[2]; fd[0] = open("file0.txt",O_RDWR); fd[1] = open("file1.txt",O_RDWR); pipe(fd); pid_t pid; char buf[256]; pid = fork();//create child process if(pid<0){ printf("fork error "); } else if(pid>0){ memset(buf,'