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

标签 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;

第二个脚本是(读者):

#!/bin/bash

fifo_name="myfifo";

while true
do
    if read line <$fifo_name; then
       # if [[ "$line" == 'ar' ]]; then
        #    break
        #fi
        echo $line
    fi
done

谁能帮帮我? 谢谢

最佳答案

将第二个脚本替换为:

#!/bin/bash    
fifo_name="myfifo"
while true
do
    if read line; then
        echo $line
    fi
done <"$fifo_name"

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

关于bash - 从两个不同的脚本写入和读取 fifo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25900873/

相关文章:

c# - 使用 BinaryWriter 将一位写入二进制文件

bash - xargs -0 后如何执行多个命令?

bash - 我应该如何将我的 bash 脚本缩减为 5 个 for 循环?

fifo - 如何使 Amazon sqs 消息遵守 FIFO

C FIFO - 如何在等待客户端请求时读取服务器的标准输入

java - 不关闭 BufferedWriter 的后果是什么

java - 是否有可能始终将 -Djava.library.path 从 POM 文件内部传递给 Maven 测试?

bash - 在 bash 中隐藏错误信息

c - O_ASYNC 停止生成 SIGIO

Python覆盖字典写入文本文件问题