我想运行一个程序“A”,让它的输出进入另一个程序“B”的输入,以及标准输入进入“B”的输入。如果程序“A”关闭,我希望“B”继续运行。
我可以轻松地将 A 输出重定向到 B 输入:
./a | ./b
如果我愿意,我可以将 stderr 合并到输出中:
./a 2>&1 | ./b
但我不知道如何将标准输入结合到输出中。我的猜测是:
./a 0>&1 | ./b
但它不起作用。
这是一个不需要我们重写任何测试程序的测试:
$ echo ls 0>&1 | /bin/sh -i
$ a b info.txt
$
/bin/sh: Cannot set tty process group (No such process)
如果可能的话,我想只在命令行上使用 bash 重定向来做到这一点(我不想编写一个 C 程序来分叉子进程,并且每次我想将 stdin 重定向到管道时都做任何复杂的事情)。