以下是man writev所说的话:
O\_NONBLOCK disabled, n <= PIPE\_BUF All n bytes are written atomically; writen bytes to the pipe, then write(2) succeeds immediately, writ
管道容量为65,536字节(在Linux中是默认的)。我假设在每次读取记录时,管道内容减少了1条记录,所以在删除第83条记录的时候,我在管道中有大约5条先前的记录,或3600字节--不足以填充管道。它还说,“在Linux下,为读和写打开FIFO将在阻塞和非阻塞模式下都成功。POSIX使这种行为没有定义。”每一端的代码都很简单:
int sta
man 2 select在BUGS下面声明了以下内容:
在Linux下,select()可以将套接字文件描述符报告为“就绪可读”,而后续的读取块则是这样。因此,我的read调用不需要阻塞,因此我已经标记了管道文件描述符O_NONBLOCK。但是,我希望write调用被阻塞,直到数据被写入管道。在将数据写入管道时,是否可能有write块,但是read没有阻塞读取端呢?例如,只在管道创建后才在一端调用fcntl是合法的,因为读和写结束都有单独的文件描述符?