Linux pipes are broken, we need O_RDWR instead of O_RDONLY
PerlでEvent::Libのコードスケッチ(名前付きパイプを3つ監視してだれかがデータ入れたら読み出す)したんだけどどうも意図したように動かんなーと思ってたら、
/* Linux pipes are broken, we need O_RDWR instead of O_RDONLY */ #ifdef __linux socket = open (fifo, O_RDWR | O_NONBLOCK, 0); #else socket = open (fifo, O_RDONLY | O_NONBLOCK, 0); #endifhttp://www.monkey.org/~provos/libevent/event-test.c
が原因だったす。
$fh->open($p, O_RDONLY|O_NONBLOCK);
を
$fh->open($p, O_RDWR|O_NONBLOCK);
に変えたらOKだったす。