C-为什么仅当写入端被关闭时,为什么读取eof的读取末端才能读取EOF

  • 本文关键字:读取 eof EOF c unix pipe
  • 更新时间 :
  • 英文 :


我不太了解"关闭管道的写入端"one_answers"不写任何东西"之间的区别。如果我不在管道上写任何东西,而管道是空的,为什么读取端只是被阻止而不是读取EOF?这与关闭写结束有何不同?

从管道(或任何东西)读取EOF表示不再有输入,并且将来不会再有任何输入。

目前尚无输入,但是管道尚未关闭,则读者将(默认情况下)等待输入。如果作者写信给管道,则该数据将为读者可用。EOF会告诉读者停止尝试阅读更多数据。

这是 blocking 文件描述符的协议。管道的读取末端等待数据。关闭IT信号的写入末端。这实际上是一个强大的同步概念。

您可以将管道切换为模式,在那里缺乏数据被视为软误差,因此您只需检查是否有任何读取。当您拥有的一个文件描述符读取符(例如在处理多个客户端的服务器中)时,这将非常有用。那就是 io多路复用进来的地方。

最新更新