/bin/sh:如何从 &3 重定向到命名管道?

Posted

技术标签:

【中文标题】/bin/sh:如何从 &3 重定向到命名管道?【英文标题】:/bin/sh: How to redirect from &3 to named pipe? 【发布时间】:2010-01-27 12:38:45 【问题描述】:

我有一个从命名管道读取的后台进程。 例如

mkfifo /tmp/log.pipe

./myprog.sh < /tmp/log.pipe

我想使用 &3 而不是指定 /tmp/log.pipe

echo "aaa" >&3 但结果类似于echo "aaa" > /tmp/log.pipe

如何每次都将 &3 重定向到 /tmp/log.pipe。

【问题讨论】:

【参考方案1】:
exec 3>/tmp/log.pipe

【讨论】:

我试过了,但是 shell 等待了一些东西。我必须 Ctrl+C 才能恢复正常。它在等什么?我使用 bourne shell 它应该在脚本中使用。 哦,谢谢。所以我必须在每个脚本中添加exec 3>/tmp/log.pipe 行吗?有没有办法全局设置? 有一种解决方法,但它非常 hackish,如果您不记得每次都这样做,您的脚本将会崩溃。最好将它放在需要它的每个单独的脚本中。简而言之,编写一个执行 exec 然后调用 shell 的脚本。

以上是关于/bin/sh:如何从 &3 重定向到命名管道?的主要内容,如果未能解决你的问题,请参考以下文章

Vue Router 重定向&别名

Bash 重定向:命名管道和 EOF

301 使用 IIS 重定向到具有命名锚点的 URL

将子进程的 stdout 和 stderr 重定向到两个命名管道(然后从它们读回)

无法将多个 shell 语句重定向到命名管道

键盘输入错误地重定向到命名管道读取