进程间通讯的目的:
通讯发展史:
进程间通讯的方式:
管道通信:
管道通信的特点:
无名管道:半双工管道(数据只能在一个方向上流动)
(1) 函数的学习
5.1创建无名管道
5.1.1 函数名
pipe
5.1.2 函数原形
int pipe(int pipefd[2])
5.1.3 函数功能
创建无名管道
5.1.4 所属头文件
#include<unistd.h>
5.1.5 返回值
成功:0
失败:-1
5.1.6 参数说明
pipefd[0]: 指向管道的读端fd
pipefd[1]: 指向管道的写端fd
实例:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main(void)
{
pid_t pid = 0;
int pipefd[2];
char c_buf[10];
/*2. create pipe*/
pipe(pipefd);
/*1. create process*/
pid = fork();
if(pid>0)
{
/*parent process write date*/
write(pipefd[1],"hello",6);
wait();
close(pipefd[1]);
exit(0);
}
if(pid==0)
{
/*progeny process*/
read(pipefd[0],c_buf,6);
printf("child read %s\n",c_buf);
close(pipefd[0]);
exit(0);
}
return 0;
}