Perl:sysopen()在打开命名管道时挂起

时间:2012-06-20 09:47:24

标签: perl named-pipes

我正在使用以下代码打开位于'/ tmp / xyz'的命名管道,以便进行只读访问:

#!/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

有人知道,发生了什么?提前谢谢!

1 个答案:

答案 0 :(得分:4)

您在阻止模式下打开它,程序将不会继续,直到有人写入FIFO。

你可能想要打开它非阻塞:

O_RDONLY | O_NONBLOCK