2012-06-20 32 views
2

我用下面的代碼來打開位於「/ tmp目錄/ XYZ」命名管道進行只讀訪問:的Perl:的sysopen()掛在打開的命名管道

#!/usr/bin/perl 
use strict; 
use Fcntl; 
... 
sysopen(FIFO, "/tmp/xyz", O_RDONLY) or die ("opening named pipe failed: $!\n"); 
... 

的問題是,在打電話時sysopen掛起。呼叫執行後,它既不「死」也不編碼。

輸出LS -la的/ tmp/XYZ的:

prw-r--r-- 1 user group 0 Jun 20 11:45 /tmp/xyz 

任何人有一個想法,是怎麼回事?提前致謝!

回答

4

您在阻塞模式下打開它,程序將不會繼續,直到有人寫入FIFO。

你可能想打開無阻塞:

O_RDONLY | O_NONBLOCK 
+0

就是這樣,非常感謝! :-) –