linux——进程间通信(管道)

概念
进程间通信是指子进程与父进程间的通信,一般用作父进程对子进程的控制或者子进程将其动向告诉父进程,由于进程是一个程序执行的实例,进程之间本身是无法进行通信的,故而运用一种管道将二者联系起来。当然管道并不只限于在父子进程之间通信,如果在子进程中在创建一个进程,我把它称为孙进程,那么子进程的父进程也就是爷进程,他与孙进程之间同样可以用管道进行通信。

创建一个管道

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;
 }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值