linux重定向合并,linux – 将stdin _and_ stdout重定向到管道

没有编写辅助程序就无法做到这一点.

通常,stdin可能是只读文件描述符(哎呀,它可能指的是只读文件).所以你不能“插入”任何东西.

您将需要编写一个“帮助程序”程序来监视两个文件描述符(例如,0和3),以便从两者中读取并“合并”它们.一个简单的select或poll循环就足够了,你可以用大多数脚本语言编写它,但不是shell,我不这么认为.

然后,您可以使用shell重定向将程序的输出提供给“帮助程序”的描述符3.

既然你想要的基本上与“tee”相反,我可以称它为“eet”……

[编辑]

如果只有你可以在后台启动“猫”…

但这将失败,因为具有控制终端的后台进程无法从stdin读取.所以,如果你可以从控制终端分离“猫”并在后台运行它…

在Linux上,“setsid cat”应该粗略地做到这一点.但是(a)我无法让它工作得很好而且(b)我今天真的没有时间和(c)无论如何它都是非标准的.

我只想编写帮助程序.

[编辑2]

好的,这似乎有效:

{ seq 5 ; sleep 2 ; seq 5 ; } | /bin/bash -c 'set -m ; setsid cat ; echo HELLO'

set -m thing强制bash启用作业控制,这显然需要防止shell从/ dev / null重定向stdin.

这里,echo HELLO代表你的“程序A”. seq命令(中间的睡眠)只是提供一些输入.是的,你可以将整个事情传递给进程B.

关于丑陋和不便携的解决方案,你可以要求……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值