我创建了这个fifo / named管道“
unsigned char*
在稍后的某个时候,我从文件系统中删除了这个fifo - 我假设读取循环因EOF或其他原因而结束 - 但我怎么能听到那个事件呢?如何在读取循环结束时监听?
答案 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
测试读循环过程是否仍然存在。