Linux-FIFO阻塞读写
进程A阻塞读打开FIFO,进程B阻塞写打开FIFO,FIFO作为A进程的一个工作队列,A使用一个while循环读取FIFO中的任务进行处理,B接收输入往FIFO写入任务,此时A进程的FIFO阻塞到FIFO中有内容可读才返回。在某个时候,使用信号把B终止掉。A不再读阻塞,读返回0,errno=0。求解释
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Linux中,pipe的实现是,首先通过pipe(int file_descriptor[2])打开一个管道,得到两个描述符,一个是读,一个是写。
如果写端没有被关闭,则当没有数据可读的时候,read调用会阻塞。
如果写端已经被关闭,则read调用会返回0,errno=0
你的问题中,使用信号把B终止,如果B进程打开的写管道的引用数为1,即没有更多的进程打开过该管道描述符,则B进程退出的时候,会自动释放写管道文件描述符,即关闭写管道,故A调用read会返回0