2

我正在使用以下代码打开位于“/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

任何人有一个想法,发生了什么?提前致谢!

4

1 回答 1

4

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

您可能希望以非阻塞方式打开它:

O_RDONLY | O_NONBLOCK
于 2012-06-20T09:58:33.650 回答