我有多个进程(以及某些进程中的多个线程)写入单个命名管道。管道O_WRONLY
为每个作家打开。
我有另一个从这个管道读取的进程,用select
. 管道O_RDONLY | O_NONBLOCK
在阅读器中打开。
当select
阅读器唤醒时,最多会read
返回一个可用数据块,还是可以返回多个块?如果是前者,那么我希望在我读完第一个块之后,select
会立即醒来,直到我读完剩余的块。
或者可以read
返回少于一个作家编写的块?
我正在编写和读取字符串,它们都小于PIPE_BUF
,所以我知道写入是原子的。我可以很容易地附加一个分隔符来检查多个字符串,但我只是好奇它在 Linux 上是如何工作的。