我想知道stderr在哪里转储其内容。 我有一个问题,比如它是否转储到syslog? 请解释一下。
答案 0 :(得分:4)
stderr
只是另一个输出流,就像stdout
。
它连接的位置取决于应用程序的调用方式。
例如,如果我运行foo.exe 2> errors.txt
,则stderr
将写入指定的文件。
答案 1 :(得分:1)
每当您决定重定向时,就会转储Stderr输出。
如果您在GUI环境中运行程序,点击图标或其他内容,请在.xsession-errors
中查找$HOME
。
如果您从shell运行程序而不重定向stderr,您只需在终端上看到它(并且它不会保存在其他任何地方)。
答案 2 :(得分:1)
这取决于环境。
默认情况下,stderr通常连接到与stdout相同的位置,即当前终端。
否则,你不会看到那些令人讨厌的错误。
Here is a blog post关于将stderr重定向到系统的日志记录机制。
答案 3 :(得分:0)
stderr
是一个流。它由拥有过程管理并输出。它去哪里'由如何调用进程定义。父进程可以收集它并将其写入文件,忽略它,将其重定向到/dev/null
(基本上对其进行分箱)等。
答案 4 :(得分:0)
虽然stderr
可以重定向到其他位置,但它通常会输出到与stdout
相同的位置。要使它成为系统日志,你肯定要工作一点。这个链接:
With bash, how can I pipe standard error into another process?
显示了如何将stderr管道传输到管道,如果另一个进程是写入“syslog”的进程,它将执行您想要的操作。但是对于大多数情况,将syslog功能添加到您自己的程序中可能更容易。