码迷,mamicode.com
首页 > 系统相关 > 详细

linux进程间通信之一:无名管道

时间:2016-12-17 11:18:27      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:for   使用方法   http   通过   文件系统   实现   描述符   fork   isp   

  无名管道是linux中管道通信的一种原始方法,有以下特征:

  1、单工通信模式,具有固定的读端和写端;

  2、管道可以看成是一种特殊的文件,对于它的读写可以使用普通的read(),write()等文件IO操作函数接口,但是它不属于任何文件系统,并且只存在与内存中;

  3、只能用于具有亲缘关系的进程之间的通信;

  4、通常使用时,首先创建一个管道,然后调用fork函数创建一个子进程,该子进程会继承父进程所创建的管道;

  5、只有在管道的读端存在时,向管道写入数据才有意义,否则向管道写入的数据的进程将收到内核发送过来的SIGPEPE信号;

  6、向管道写入数据时,linux不保证写入的原子性,管道缓冲区只要有空间,写进程就会试图向管道写入数据,如果管道缓冲区已满,那么写操作将会一直阻塞;

下面例子详尽阐述管道的使用方法,首先创建管道,然后父进程使用fork函数创建子进程,最后通过关闭父进程的读描述符和子进程的写描述符,建立它们之间的通信,父子进程的先后顺序通过信号量PV操作来实现;图1为详尽实现代码,图2为编译运行后结果。

技术分享

技术分享

 

linux进程间通信之一:无名管道

标签:for   使用方法   http   通过   文件系统   实现   描述符   fork   isp   

原文地址:http://www.cnblogs.com/diaohaiwei/p/6188360.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!