2012-06-20 2 views
2

Я использую следующий код, чтобы открыть именованный канал, расположенный в «/ TMP/А» для доступа только для чтения: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/АБВ:

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

Кто-нибудь получил представление о том, что происходит? Заранее спасибо!

ответ

4

Вы открыли его в режиме блокировки, программа не будет продолжаться до тех пор, пока кто-то не напишет в FIFO.

Вы, вероятно, хотите, чтобы открыть его без блокировки:

O_RDONLY | O_NONBLOCK 
+0

, что оно, спасибо много! :-) –

Смежные вопросы