Linux:进程间通信:管道

本文介绍了Linux系统中的进程间通信(IPC),包括其目的和主要方式,重点讲解了无名管道(半双工,用于亲缘进程)和命名管道FIFO(全双工,可用于任意进程间通信)。详细阐述了管道的特点和使用案例,展示了如何创建和操作管道以及命名管道FIFO。
摘要由CSDN通过智能技术生成

 

什么是进程间通信(IPC)?

它指的是不同进程之间传播和交换信息,多个进程之间互相沟通的一种方法;

进程间通信(IPC)有什么目的?

  1. 数据传输:一个进程需要将它的数据发送给另一个进程;
  2. 资源共享:多个进程之间共享同样的资源;(需要内核提供互斥和同步进制)
  3. 一个进程需要向另一个或一组进程发送消息,通知它发生了某种事件(如进程终止需要通知父进程)
  4. 进程控制:有些进程希望完全控制另一个进程的执行,(如debug进程),此时控制进程希望能够拦截另一个进程的所有异常,并能够及时知道它的状态改变。

进程间通信的方式

1 、管道:    

              无名管道( 半双工管道    ):可用于具有亲缘关系进程间的通信

              无名管道的缺点:1、没有名字,因此无法使用open()打开
                                           2、只能用于亲缘进程间(如父子进程、兄弟进程、祖孙进程等)通信
                                           3、半双工工作方式,读写端是分开的,pipefd[0]为读端,pipefd[1]为写端
                                           4、写入操作不具有原子性,因此只能用于一对一的简单通信 

              命名管道(FIFO):可用于无亲缘关系进程间的通信

 管道特点
---------------------------------
1:只能在有亲缘关系的进程之间进行通信(也就是在父子进程之间通信)

2:单向通信一个读端,一个写端,如果要双向通信就要建立两个管道

3:接收数据流,与数据格式无关

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值