打印
[嵌入式linux]

Linux下进程间通信方式-管道

[复制链接]
864|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shanghaifar|  楼主 | 2013-8-29 14:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本文关键字: linux 管道通信,linux 进程通信方式 ,无名管道,有名管道
    管道是Linux中进程间通信的一种方式,它把一个程序的输出直接连接到另一个程序的输入。Linux的管道主要包括两种:无名管道和有名管道。
    1.无名管道
    无名管道是Linux中管道通信的一种原始方法,如图1(左)所示,它具有如下特点:
    ● 它只能用于具有亲缘关系的进程之间的通信(也就是父子进程或者兄弟进程之间)。
    ● 它是一个半双工的通信模式,具有固定的读端和写端。
    ● 管道也可以看成是一种特殊的文件,对于它的读写也可以使用普通的read()、write()等函数。但是它不是普通的文件,并不属于其他任何文件系统,并且只存在于内存中。
    2.有名管道(FIFO)
    有名管道是对无名管道的一种改进,如图1(右)所示,它具有如下特点:
    ● 它可以使互不相关的两个进程实现彼此通信。
    ● 该管道可以通过路径名来指出,并且在文件系统中是可见的。在建立了管道之后,两个进程就可以把它当做普通文件一样进行读写操作,使用非常方便。
    ● FIFO严格地遵循先进先出规则,对管道及FIFO的读总是从开始处返回数据,对它们的写则是把数据添加到末尾,它们不支持如lseek()等文件定位操作。
  
图1 无名管道(左)和有名管道(右)

相关帖子

沙发
shanghaifar|  楼主 | 2013-9-3 11:16 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

47

主题

81

帖子

0

粉丝