读书人

求教UNP2 FIFO章节的有关问题

发布时间: 2012-03-19 22:03:05 作者: rapoo

求教,UNP2 FIFO章节的问题
UNP2(第二版)46~47页的那段话看不懂~~

例子为:一个简单的服务器打开一个众所周知的FIFO来读,等待客户写消息。

书上说:打开该管道两次,一次读一次写,readfifo描述符用于读,dummyfd则从来不用

readfifo = open(FIFO, O_RDONLY, 0);
dummyfd = open(FIFO, O_WRONLY, 0);

问题1:(书上原文)如果不这么做(打开管道两次), 那么每当一个客户终止,该FIFO就变空,服务器read返回0,表示一个文件结束符。我们不得不close该FIFO,并重新打开。

问题2:如果我们总有一个该FIFO的描述符打开用于写,那么当没有客户时,服务器read一定不会返回0以指示读到一个文件结束符。相反服务器只是阻塞在read调用中,等待。

红色部分不太理解,望大家赐教!

[解决办法]
因为对于同一个FIFO, 多个写打开的情况下, 只有所有写关闭, 读端才能返回EOF, 所以我们特意的保持一个写打开FD, 这样在下面的编码中就不必担心写端全部关闭读端返回EOF.
[解决办法]
只要有人(不管是自己,还是别人)打开这个FIFO,读操作就不会读到EOF

读书人网 >UNIXLINUX

热点推荐