gpt4 book ai didi

bash - 如何避免 echo 关闭 FIFO 命名管道? - Unix FIFO 的有趣行为

转载 作者:行者123 更新时间:2023-11-29 08:40:46 28 4
gpt4 key购买 nike

我想将一些数据输出到管道并让其他进程逐行处理数据。这是一个玩具示例:

mkfifo pipe
cat pipe&
cat >pipe

现在我可以输入我想要的任何内容,按下回车后我立即看到同一行。但是如果用 echo 替换第二个管道:

mkfifo pipe
cat pipe&
echo "some data" >pipe

管道在 echocat pipe& 完成后关闭,因此我无法通过管道传递更多数据。有没有一种方法可以避免关闭管道和接收数据的进程,以便我可以通过管道从 bash 脚本传递多行数据,并在它们到达时对其进行处理?

最佳答案

将所有要输出到fifo的语句放在同一个子shell中:

# Create pipe and start reader.
mkfifo pipe
cat pipe &
# Write to pipe.
(
echo one
echo two
) >pipe

如果复杂一些,可以打开管道写:

# Create pipe and start reader.
mkfifo pipe
cat pipe &
# Open pipe for writing.
exec 3>pipe
echo one >&3
echo two >&3
# Close pipe.
exec 3>&-

关于bash - 如何避免 echo 关闭 FIFO 命名管道? - Unix FIFO 的有趣行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8410439/

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