管道未取得標準輸出

管道未取得標準輸出

我正在從 bash 終端機運行 java 程序OS X 10.8,並嘗試重定向它產生的輸出。

但是,當通過管道運行它或將其重定向到文件時,輸出為空,但我在終端中看到輸出。

為了說明這一點:

> java program.java
13/10/02 14:18:30 WARN some
13/10/02 14:18:30 INFO log
13/10/02 14:18:30 INFO messages
...

> java program.java > log
> cat log
>

java 程式是否可以設定為寫入另一個流stdout,但仍會在終端機中產生輸出。這樣的事可能嗎?

答案1

為每個程式開啟標準檔案stdin(標準輸入)、stdout(標準輸出)和stderr(標準錯誤)。預設情況下,寫入兩者stdoutstderr在終端中輸出。

stderr將錯誤和日誌訊息寫入而不是stdout為了不將日誌或錯誤訊息與實際程式輸出混合是一種常見的約定。您可以stderr使用重定向2>,例如:

command 2> log

相關內容