gpt4 book ai didi

bash - 为什么我的 (ubuntu 11.10 bash 4.2.10, x86_64 ) 命名管道会堵塞?

转载 作者:行者123 更新时间:2023-12-04 18:42:09 27 4
gpt4 key购买 nike

第 1 步:我打开一个终端并输入

mkfifo mypipe
cat < mypipe

第 2 步:我打开另一个并输入:
for elem in {1..100} ; do echo "$elem" > mypipe ; done

打印随机数量的数字, 第一个脚本退出 第二个挂起 .
请分享智慧。 Ubuntu的错误?如果需要更多信息,请询问,我不认为有任何相关的 atm。

谢谢,
你们真棒。

最佳答案

命名管道的工作方式是,当写入进程关闭管道时,读取进程会收到一个 EOF。当cat看到文件已经结束它停止读取并退出。这里 bash 似乎在循环中大部分时间重用打开的文件,而不是在每次运行时关闭并重新打开它。

为了确保文件在您可以这样编写时完全打开和关闭:

(for elem in {1..100} ; do echo "$elem"  ; done) > mypipe

获取 cat在每次运行中只输出一个数字,您必须使用程序 /bin/echo而不是内置的 echo .这会强制 Bash 在循环的每次运行中打开和关闭文件:
for elem in {1..100} ; do /bin/echo "$elem" > mypipe ; done

关于bash - 为什么我的 (ubuntu 11.10 bash 4.2.10, x86_64 ) 命名管道会堵塞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9199573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com