讲师博文
关于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监听器的五种方式

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号