为什么只有在写入结束时,管道的读取结束才会读取EOF?

Xuf*_*eng 5 c unix pipe

我真的不明白"关闭管道的写入端"和"不向管道写任何东西"之间的区别.如果我没有写任何东西到管道并且管道是空的,为什么读取结束只是被阻止而不是读取EOF?与结束写入结束有什么不同?

Kei*_*son 10

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

如果此时没有可用输入,但管道尚未关闭,则读取器将(默认情况下)阻止等待输入; 如果作者然后写入管道,那么该数据将可供读者使用.EOF会告诉读者不要再尝试阅读更多数据.