参考:http://blog.csdn.net/nodeathphoenix/article/details/23284157

http://blog.csdn.net/linyt/article/details/2983960  管道死锁

一,管道读写规则

当没有数据可读时

  • O_NONBLOCK disable:read调用阻塞,即进程暂停执行,一直等到有数据来到为止。
  • O_NONBLOCK enable:read调用返回-1,errno值为EAGAIN。

当管道满的时候

  • O_NONBLOCK disable: write调用阻塞,直到有进程读走数据
  • O_NONBLOCK enable:调用返回-1,errno值为EAGAIN

如果所有管道写端对应的文件描述符被关闭,则read返回0

如果所有管道读端对应的文件描述符被关闭,则write操作会产生信号SIGPIPE

当要写入的数据量不大于PIPE_BUF时,linux将保证写入的原子性。

当要写入的数据量大于PIPE_BUF时,linux将不再保证写入的原子性。

Detail 参见:

http://man7.org/linux/man-pages/man7/pipe.7.html

posted on 2016-08-28 11:23  妞溜溜  阅读(82)  评论(0)    收藏  举报