【发布时间】:2013-05-24 18:39:57
【问题描述】:
我有多个进程(以及某些进程中的多个线程)写入单个命名管道。管道以O_WRONLY 为每个作者打开。
我有另一个从这个管道读取的进程,被select 阻塞。在阅读器中使用O_RDONLY | O_NONBLOCK 打开管道。
当阅读器中的select 唤醒时,read 会最多返回一个可用数据块,还是可以返回多个块?如果是前者,那么我希望在我读完第一个块后,select 会立即唤醒,直到我读完剩余的块。
或者read 可以返回少于一个作者编写的块吗?
我正在写入和读取字符串,它们都小于PIPE_BUF,所以我知道写入是原子的。我可以很容易地附加一个分隔符来检查多个字符串,但我只是好奇它在 Linux 上是如何工作的。
【问题讨论】:
标签: c linux pipe named-pipes