当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > 关于pipe的使用

关于pipe的使用 时间:2014-06-19      来源:未知

Pipe就是咱们常说的无名管道,是进程间通信方式的一种。在使用pipe进行进程间通信时,需要熟悉他的特点及使用规则。

无名管道具有如下的特点:

1、只能用于具有亲缘关系的进程之间。

2、半双工的通信模式,具有固定的读端和写端。

3、管道可以看成是一种特殊的文件,对于它的读写可以使用文件IO如read、write函数。

4、管道是基于文件描述符的通信方式。当一个管道建立时,它会创建两个文件描述符fd[0]和fd[1]。其中fd[0]固定用于读管道,而fd[1]固定用于写管道。

关于管道在读写的时候需要注意以下几点:

1、读:

(1)有写端,至少有一个进程,有写端存在

有数据:使用read可以读到pipe中的数据,返回实际读取的字节数

无数据:阻塞,等待其他进程向管道写入数据。

(2)无写端,所有进程,写端都关闭了。

有数据:使用read可以读到pipe中的数据,返回实际读取的字节数

无数据:无写端意味着所有的写描述符关闭了,不会向管道中写入数据了,会立刻返回0.

2、写:

(1)有读端,至少有一个进程,读端存在。

有空间:可使用write向管道中写入内容,返回实际写入的字节数。

空间不足:有多少写多少,没写完的阻塞等待,直到其他进程将管道中数据读走,才继续写入数据。

(2)无读端,所有进程,写端都关闭了。

没有读端的时候,想写管道,会得到内核给的SIGPIPE信号。管道破裂。

管道读端不存在的时候,内核是不允许向管道内写入数据的。

Pipe创建之后,在内核中。当所有的读端和写端都关闭的时候,pipe将被释放掉

上一篇:Android init.rc解析

下一篇:Button监听器的五种方式

热点文章推荐
华清学员就业榜单
高薪学员经验分享
热点新闻推荐
前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2022 北京华清远见科技集团有限公司 版权所有 ,京ICP备16055225号-5京公海网安备11010802025203号

回到顶部