管道未获取标准输出

管道未获取标准输出

我正在从 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

相关内容