java stderr 去哪里了?
我想知道,java stderr 标准去哪里?
我知道我可以使用 System.setErr 更改 stderr,它“重新分配“标准”错误输出流。”,但我不知道哪一个是“标准”。
我想进一步具体说明我的问题: 我有在 java (jni) 中使用的 C++ 库。 问题是我似乎看不到来自我的 C++ 库的 stderr 输出。 当我运行使用该库的 java api 时,我在 C++ 库中调用assert(),但在控制台中看不到输出。
I would like to know, where does java stderr standardly go?
I know I can change the stderr using System.setErr, which 'Reassigns the "standard" error output stream.', but I dont know, which one is "standard".
I would like to specify my question more:
I have C++ library that I use in java (jni). The problem is that it appears that I cannot see output to stderr, that comes from my C++ library. I call assert () in C++ library and don't see the output in console, when I run the java api that uses the library.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
无论设置如何,它都会进入进程的标准错误流。
大多数平台允许您将标准错误流重定向到其他地方(例如,重定向到文本文件)。
System.setErr 的想法是允许您不使用进程本身的标准错误流,而是更改它以便调用
System.err.println
等到给定的流。It goes to the standard error stream of the process, whatever that's set up to be.
Most platforms allow you to redirect the standard error stream somewhere else (e.g. to a text file).
The idea of System.setErr is to allow you to not use the standard error stream of the process itself, but change it so that calls to
System.err.println
etc go to the given stream.默认情况下,System.err 是控制台,就像 System.out 一样。
By default System.err is the console, just like System.out.
调用者的文件描述符 2。 它从那里去哪里——取决于调用者。
在控制台上,您可以将其重定向到其他地方,例如:
File descriptor 2 of the caller. Where it goes from there — depends on the caller.
On console, you can redirect it somewhere else, like for example:
我刚刚编写了一个执行 System.err.println 的小测试程序,它似乎输出到控制台。
I've just written a little test program that does a
System.err.println
and it would appear to be output to the console.这应该转到 java.io.FileDescriptor.err
https://docs.oracle.com/ javase/1.5.0/docs/api/java/io/FileDescriptor.html
This should go to java.io.FileDescriptor.err
https://docs.oracle.com/javase/1.5.0/docs/api/java/io/FileDescriptor.html
标准错误输出流转到控制台。 该流已打开并准备好接受输出数据。
请参阅 java sun api 了解更多详情。
The standard error output stream goes to the console. This stream is already open and ready to accept output data.
See the java sun api for further details.