进程间通信

进程间通信:

我们可以直观的理解成让两个进程进行通信。

也可以这样理解: 两个不同的进程看到同一份公共的资源。

 

为什么进程间要通信呢?

1数据传输:一个进程需要把数据发送给另一个进程

2.资源共享:多个进程之间共享同样的资源

3.通知进程:一个进程需要向另一个或另一组进程发送信息,通知他们某时间(比如说我们的子进程退出要通知父进程)

 

下来我们就来说说用管道实现进程通信的方法

1.匿名管道

这就是匿名管道的实现:https://github.com/Amour132/Anonymous-Pipe/blob/master/mypipe/mypipe.c

父进程创建出管道然后创建子进程,因为父子进程的代码是共享的所以他们都可以看到管道

然后通过文件描述符的控制达到一个读一个写,这样就能实现进程间通信

 

匿名管道的特点:

1.应用于有血缘关系的进程,常用于父子进程

2.只能单向通信

3.当相关进程退出时,管道也会退出,生命周期随进程

4.管道时面向字节流的。

匿名管道只能用于有血缘关系的进程,那么如果两个进程没有血缘关系呢?我们怎么进行进程间通信?

命名管道就产生了

 

命名管道:https://github.com/Amour132/name-pipes/tree/master/myname-pipes

我们用命令mkfifo + filename自己创建出一个文件

然后我们就会发现我们多了一个管道文件,然后我们就可以控制两个进程通过系统调用open去打开然后进行我们的操作

需要注意的是命名管道也是单向性的。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值