无名管道只能用于父进程和子进程之间通信,而有名管道可以用于任意两个进程间通信
代码实例:
#include<stdio.h>
#include<unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
{
pid_t pid = 0;
int pipefd[2];
char c_buf[10];
/*2 创建管道 */
pipe(pipefd);//注意pipe()函数的用法,函数调用后pipefd会被赋值。
/*1 创建子进程*/
pid = fork();
if(pid >0){
/*父进程写入数据*/
write(pipefd[1],"hello",6);
wait(NULL);// 等待子进程结束
close(pipefd[1]);//关闭管道fd
exit(0);//退出主进程
}
if(0 == pid){
/*子进程读数据*/
read(pipefd[0],c_buf,6);
printf("child process read : %s\n", c_buf);
close(pipefd[0]);
exit(0);
}
return 0;
}
~
~
~
~