Shell
從標準輸入重定向程序讀取的輸出
當我想重定向a.out程序的輸出時,我將使用
./a.out > output.txt
當程序從stdin讀取某些內容時,這不起作用。在這種情況下,您將如何重定向輸出?
我只能用
./a.out < inputs.txt > output.txt
我可以做同樣的事情,但從stdin讀取輸入嗎?
編輯:我意識到它有效,但我看不到提示,因為所有內容都轉到文件output.txt。因此,唯一的問題是在標準輸入上查看提示並同時保留重定向。
一種選擇是將提示寫入
stderr
而不是stdout
. 它們將在終端上可見,但在output.txt
.另一種選擇是不對輸出使用重定向,而是將輸出文件名作為參數並自己打開該文件。然後,您可以使用
stdout
提示。(這更靈活。您可以決定哪些內容僅用於文件,哪些內容僅用於螢幕,以及哪些內容可能同時用於兩者。)如果您無法更改程式碼,則唯一的選擇是使用
tee
或其他一些此類實用程序。緩衝可能是個問題;stdbuf
可能會有所幫助。