IPC 相关

 

进程间通信(Inter-process communication, IPC),见图一:

 

 

一,最初的Unix IPC 包括 PIPE,FIFO,信号。

1,管道是 linux IPC 的一个重要手段,主要有 pipe 和 fifo。目前只知道这两个。

查看 pipe 的手册,发现 pipe 是系统函数,会创建两个文件描述符。其中 files[1] 为写入端, files[0] 为读出端。因此属于单方向。

在一篇文章中看到一段说明描述管道,非常好,贴出来


管道顾名思义,你可以将其理解为日常生活中的管子,一边流入,一边流出。它可以有半双工和全双工。半双工就是只能一边流入,另一边流出;全双工则是一边可以流入,也可以流出。

pipe就是一种半双工的管道。其中,fd[1] 用来向管道中写入数据,而fd[0]在另一端用来读出数据。如果现有两个进程要利用pipe进行通信。此时,就要保证只能有一个写入端和一个读出端,即:fd[1]和fd[0]只能有一个。

疑问:PIPO 都应该属于 FIFO(first in first out)的吧?不知道为什么能单独拿出来说,呵呵!!暂时只看到这里,先记录疑问先。
解疑:引用一篇文章的内容如下,原来 fifo就是全双工的管道,呵呵。


fifo是一种全双工,即:它的一端既可以进行读取fd[0],也可以进行写入 fd[1]。
正因为它的这种通信方式,使其可以用来涉及基于C/S模式的网络通信。具体做法:
首先让服务器产生一个服务器端的FIFO,然后让各个客户端产生以其PID为名称的客户端的FIFO,在客户于服务器进行通信时,客户端向服务器端发送自己的PID,以使服务器对客户的请求进行响应时,向其客户端的FIFO写入响应信息。代码实现客户端和服务器进行各自的名称和PID交换。

管道,主要包括 无名管道(pipe) 和有名管道(named pipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。fifo就是一种有名管道。不知道有名管道还包括哪些,呵呵?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值