1

我想知道标准错误在哪里转储其内容。我有一个问题,比如它是否转储到系统日志?请解释。

4

5 回答 5

4

stderr只是另一个输出流,就像stdout.

它连接的位置取决于应用程序的调用方式。

例如,如果我运行,foo.exe 2> errors.txt那么stderr将写入指定的文件。

于 2013-01-30T13:49:15.133 回答
1

每当您决定重定向 Stderr 输出时,它就会被转储。

如果您在 GUI 环境中运行程序,通过单击图标或其他东西,.xsession-errors在您的$HOME.

如果您从 shell 运行程序并且不重定向 stderr,您只会在终端上看到它(并且它不会保存在其他任何地方)。

于 2013-01-30T13:50:23.257 回答
1

这取决于环境。

默认情况下,stderr 通常连接到与 stdout 相同的位置,即当前终端。

否则,您将看不到令人讨厌的错误。

这是一篇关于将 stderr 重定向到系统日志机制的博客文章。

于 2013-01-30T13:50:25.563 回答
0

stderr是一个流。它由拥有进程管理和输出。它的“去向”由流程的调用方式定义。父进程可以收集它并将其写入文件、忽略它、将其重定向到/dev/null(本质上是装箱)等。

于 2013-01-30T13:50:37.207 回答
0

虽然stderr可以重定向到其他地方,但它通常输出到与stdout. 要将其写入系统日志,您肯定需要做一些工作。此链接: 使用 bash,如何将标准错误传递到另一个进程?

显示了如何通过管道将 stderr 传输到管道,并且如果另一个进程是写入“syslog”的进程,它将执行您想要的操作。但在大多数情况下,将系统日志功能添加到您自己的程序中可能更容易。

于 2013-01-30T13:52:48.780 回答