常見的 FIFO reader 範例是 

open("fifo", O_RDONLY | O_NONBLOCK);

一旦搭配 select, 會發現 select 經常被 trigger,

失去了 select 該有的功效 ...

原來當 peer 關掉 write end of FIFO,

FIFO read end 反而會一直被 EOF 觸發.

正解是

open("fifo", O_RDWR | O_NONBLOCK);

此時再搭配 select, 

read end 就不會被 EOF 持續 trigger 了

 

Reference:

https://stackoverflow.com/questions/14594508/fifo-pipe-is-always-readable-in-select

 

 

 

 

arrow
arrow
    全站熱搜

    kk 發表在 痞客邦 留言(0) 人氣()