![将多个流复用为单个流 - Bash](https://linux22.com/image/15730/%E5%B0%86%E5%A4%9A%E4%B8%AA%E6%B5%81%E5%A4%8D%E7%94%A8%E4%B8%BA%E5%8D%95%E4%B8%AA%E6%B5%81%20-%20Bash.png)
我有这个问题有一段时间了。
设想
我想做的是使用 CLI 运行一个程序。该程序一次接受一个命令并执行它。大多数时候这些命令是批量执行的。因此,在一个流上捕获一系列命令会非常有效,但我也想通过键盘发送一些附加命令来不时进行手动干预。
我尝试解决它
我使用了一个命名管道,如下所示,并将它们全部重定向到相同的文件描述符,如下所示。
先进先出
$ mkfifo /tmp/testpipe
$ mknod /tmp/testpipe p
重定向
{ cat /tmp/testpipe &
cat - &
wait; } | consumer_process
问题
通过上面解释的设置,当我第一次将某些内容推入命名管道时,它按预期工作正常,但第二次当我将某些内容推入管道时,它不会到达消费者进程。
尝试修复问题失败
尝试在另一端捕获命名管道和回显。第一次成功了,但第二次就不行了。
第一学期
cat /tmp/testpipe &
第二学期
echo "TESTING123" > /tmp/testpipe --> Received on term 1
echo "TESTING123" > /tmp/testpipe --> Nothing received on term 1
有没有办法解决这个问题或者以更简单的方式完成这个任务?