我想運行一個程序「A」,將其輸出轉到另一個程序「B」的輸入,以及將stdin轉到輸入「B」。如果程序「A」關閉,我想「B」繼續運行。將stdin _and_ stdout重定向到管道
我可以輕鬆地將輸出重定向到B輸入:
./a | ./b
而且,如果我願意,我可以將stderr組合成輸出:
./a 2> & 1 | ./b
但我無法弄清楚如何將stdin合併到輸出中。我的猜測是:
./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重定向到管道時執行任何複雜的操作)。
也許'tee'命令會幫助你。祝你好運。 – shellter
正如我想到的,@markie,我想知道你在做什麼。這是一個源腳本(例如'。〜/ script.sh')會做你想要的嗎? –
@Arthur這是在玩一個Linux編程遊戲時出現的。 http://www.overthewire.org/wargames/vortex/我還沒有做到這一點,但迄今爲止兩個層面都遇到了這個問題。基本上,如果你給程序一個正確的值,它使用exec()或類似的東西給你一個shell「/ bin/sh -i」。出於某種原因,bash的行爲非常奇怪,其輸入重定向如此。如果在我付出更多努力之前耗盡了輸入,它會變得很奇怪,這導致了笨重的黑客http://axtaxt.wordpress.com/2010/12/28/overthewire-vortex-level10-2/我有一個感覺我們缺少一個明顯的解決方案。 – markie