从两个不同的脚本中写入和读取fifo

Cic*_*cio 9 bash fifo writer

我有两个bash脚本.一个脚本写入fifo.第二个从fifo读取,但在第一个结束后写入.

但有些东西不起作用.我不明白问题出在哪里.这里的代码.

第一个脚本是(作者):

#!/bin/bash

fifo_name="myfifo";

# Se non esiste, crea la fifo;
[ -p $fifo_name ] || mkfifo $fifo_name;

exec 3<> $fifo_name;

echo "foo" > $fifo_name;
echo "bar" > $fifo_name;
Run Code Online (Sandbox Code Playgroud)

第二个脚本是(读者):

#!/bin/bash

fifo_name="myfifo";

while true
do
    if read line <$fifo_name; then
       # if [[ "$line" == 'ar' ]]; then
        #    break
        #fi
        echo $line
    fi
done
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?谢谢

Joh*_*024 7

将第二个脚本替换为:

#!/bin/bash    
fifo_name="myfifo"
while true
do
    if read line; then
        echo $line
    fi
done <"$fifo_name"
Run Code Online (Sandbox Code Playgroud)

这只会打开一次fifo并从中读取每一行.

  • @Ciccio来自[man fifo](http://man7.org/linux/man-pages/man7/fifo.7.html):"在传递数据之前,必须在两端打开FIFO(读取和写入)通常,打开FIFO块直到另一端打开." 您的应用程序听起来更适合使用普通文件进行消息传递. (2认同)