小编Tro*_*per的帖子

管道问题。读取器完成后管道终止

我在 OSX 上,使用 bash,试图理解管道。我希望让程序在两个方向上与 bash shell 进行通信。我想以这样的方式设置它,使其始终是相同的 shell,以便我可以 cd 到某个目录并且 bash 会记住(而不是一直使用新的 bash shell)。

到目前为止我尝试过的是这个。从一个新的终端(A),做

mkdir /tmp/IOdir
cd /tmp/IOdir
mkfifo pToB
mkfifo bToP
tail -f -1 pToB | bash >> bToP
Run Code Online (Sandbox Code Playgroud)

然后,为了测试这个连接,我可以从一个新的终端 (B)

cd /tmp/IOdir
echo echo hello > pToB
Run Code Online (Sandbox Code Playgroud)

从第三个终端 (C)

cd /tmp/IOdir
(read myline &&  echo $myline) < bToP
Run Code Online (Sandbox Code Playgroud)

这就是我想要的。相同的 bash shell 保持活动状态,输出通过另一侧。将这种状态称为 X,以便我稍后参考。

从状态 X 向前

但是,现在,从这个状态 X 开始,我们不能再做同样的事情了。也就是说,如果我们从终端(B)

echo echo hello > pToB
Run Code Online (Sandbox Code Playgroud)

然后从终端 C

(read myline &&  echo $myline) < bToP
Run Code Online (Sandbox Code Playgroud)

然后在终端 C 什么也没有通过。 此外,如果我们再次这样做,从终端 …

pipe fifo

6
推荐指数
1
解决办法
6846
查看次数

标签 统计

fifo ×1

pipe ×1