确定谁正在侦听fifo命名管道

问题描述 投票:1回答:1

说我有一个命名管道:

mypipe="foobar"
mkfifo $mypipe

... later on say I want to write to it

echo "foo" > $mypipe

如果没有人在听,我很确定这个回音电话只是挂起。在我进行回音调用之前,有没有办法确定是否有人正在读取管道?

bash named-pipes fifo mkfifo
1个回答
2
投票

fuser实用程序会告诉您谁拥有一个打开的句柄,但在一般情况下,它需要root权限。

引用manual page,

除非以特权运行,否则fuser可能只能收集部分信息。因此,可能未列出属于其他用户的进程打开的文件,并且可执行文件可能仅被分类为映射。

安装fuser SUID root将避免与部分信息相关的问题,但出于安全和隐私原因可能不合需要。

© www.soinside.com 2019 - 2024. All rights reserved.