linux进程间通信之管道

目录

一,管道原理

1,首先父进程调用pipe函数创建管道:

2,父进程创建子进程:

3,然后就是根据需求关闭对应的读写

4,由第三步可以知道,

二,匿名管道

1,创建管道pipe

2,写一段父子通信的代码

3,运行结果

三,命名管道

1,创建命名管道

2,进一步理解

原理展示:

1,服务端先跑起来,创建好命名管道

2,客户端服务端俩个进程,客户端发数据,服务端接收

3,客户端退出,服务端也退出

四,代码链接


一,管道原理

 进程具有独立性,所以要通信首先就是俩个进程要看到同一份资源,围绕这一点理解进程间通信:

1,首先父进程调用pipe函数创建管道:

2,父进程创建子进程:

fork();此时子进程实惠拷贝父进程的pcd内容数据的,也就相当于他和父进程都知道了同一个资源,这很重要,因为进程之间是有独立性的,只要写就会发生写实拷贝,所以来个进程要想交互就必须要有同一份资源。

3,然后就是根据需求关闭对应的读写

这里因为是管道是单项通信的,它里面比我话的要复杂一点,是由同步互斥机制的,但是原理就是这样。

我们假设父进程给子进程发消息,那么父进程写,子进程读。

4,由第三步可以知道,

父进程可以发消息给子进程了,但是子进程如何发消息给父进程呢,答案就是关系关闭文件对调一下,但是如果父子进程都想发消息,还邮箱收到消息呢,那么此时我们就可以创建俩个管道。注意这里的管道只能是由父进程创建的,只要这样才可以把文件指向"继承给子进程" ,所以,匿名管道也可以理解为血缘间的通信,一般是父子,兄弟之间。

二,匿名管道

1,创建管道pipe

俩个函数,第二个多了一个参数,看文档正确使用就好了。

pipe是一个输出线参数,打开的俩个文件描述符由一个数组待会来。

2,写一段父子通信的代码

我们假设由父进

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LYH_1_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值