概念
进程间通信是指子进程与父进程间的通信,一般用作父进程对子进程的控制或者子进程将其动向告诉父进程,由于进程是一个程序执行的实例,进程之间本身是无法进行通信的,故而运用一种管道将二者联系起来。当然管道并不只限于在父子进程之间通信,如果在子进程中在创建一个进程,我把它称为孙进程,那么子进程的父进程也就是爷进程,他与孙进程之间同样可以用管道进行通信。
创建一个管道
int pipe(int fd[2]);返回值成功返回0,失败返回错误代码参数fd表示一个数组,其存储的是两个文件描述符,fd[0]表示读端,fd[1]表示写端
原理图
进程B通过write函数将数据写进管道的写端,进程A在通过read函数从读端将数据读出来。
代码示例
#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/wait.h>int fd[2]={0};char buf[100]={0};int main(){int pip=pipe(fd);if(pip!=0){return 0;}pid_t pid=fork();if(pid==0){char arr[20]="通信成功";write(fd[1],arr,strlen(arr));}else{wait(NULL);read(fd[0],buf,sizeof(buf));printf("buf=%s\n",buf);}return 0;}