【linux管道】自学笔记

来源:互联网 发布:视频后期软件免费 编辑:程序博客网 时间:2024/05/21 09:00

(管道)

1.管道本身的性质:

   管道创建后,一端fd[0]只能读,一端fd[1]只能写。如果试图在读端写,或在写端读,都会报错。

2.父进程存有fd[0]和fd[1],fork后,子进程复制父进程的fd[0]和fd[1]。

3.关闭父进/子进程的fd[0/1],并非关闭管道的读/写端,而是关闭父/子进程的文件描述符。

4.以下是四种特殊情况:

读数据时)

A. 若写端引用计数为0(写端描述符全部关闭),则读取剩余所有数据,再次read时,认为读到文件末尾,返回0.

B. 若写端引用计数大于0(有写端描述符未关闭),则读取数据,读完数据后,read阻塞。

(写数据时)

A. 若读端引用计数为0,则写数据的进程会收到SIGPIPE信号,默认终止进程。

B. 若读端引用计数大于0,则管道被写满时,write阻塞。

原创粉丝点击