管道

来源:互联网 发布:网络销售培训学校 编辑:程序博客网 时间:2024/06/08 19:46

1.管道特点

1)半双工;

2)只能适用于具有亲缘关系的进程(如父子进程)之间的通信;

3)自成一种独立的文件系统,存在于内存之中;

4)每次读数据都是从管道缓冲区的头部开始,写数据都是从管道的尾部开始。

2.管道表示

管道两端可以用描述字fd[0]和fd[1]来表示。fd[0]称为管道的读端,fd[1]称为管道的写端。

3.管道读规则

1)如果管道的写端不存在,则读端认为已经读到了数据的末尾,读函数返回的字节数为0;

2)如果管道的写端存在,则要看读端请求读的字节数是否大于PIPE_BUF。如果大于,则返回管道内现有的字节数;否则,返回读端实际请求的字节数。

4.管道写规则

1)如果管道的读端不存在,向管道写数据将会出现错误。内核将会向写进程发送SIFPIPE信号,终止该进程;

2)向管道写入数据将不保证写入的原子性。只要缓冲区有空闲区域,写进程就会向管道内写入数据直至写满,如果此时读进程仍未读走数据,则写进程将一直被阻塞。

原创粉丝点击