收听已删除的fifo /命名管道的EOF

时间:2018-03-04 07:36:23

标签: bash shell named-pipes eof fifo

我创建了这个fifo / named管道“

unsigned char*

在稍后的某个时候,我从文件系统中删除了这个fifo - 我假设读取循环因EOF或其他原因而结束 - 但我怎么能听到那个事件呢?如何在读取循环结束时监听?

1 个答案:

答案 0 :(得分:1)

我认为while read循环没有办法检测自动删除的FIFO。

您可以使用另一个循环来定期检查FIFO是否仍然存在,并终止读取循环:

while read line; do on_fifo_msg "$line"; done < ${my_named_pipe} &
read_pid=$!
while kill -0 $read_pid; do
    if ! [[ -e "$my_named_pipe" ]];
    then kill $read_pid
    fi
    sleep 1
done &

kill -0 $read_pid测试读循环过程是否仍然存在。