我正在使用 java 应用程序运行 c 语言代码java.lang.ProcessBuilder
。如果此 c 语言代码产生任何输出和错误,我可以通过process.getInputStream()
和读取这些process.getErrorStream()
。但在某些情况下(当退出代码 = 136 或 139 时),例如如果代码执行失败floating point error
,我在进程的错误流中没有收到任何错误。因此,我尝试直接在 shell 上运行我的 c 语言代码,并将 stderr 和 stdout 重定向到单独的文件。代码.c
#include<stdio.h>
int main() {
int x = 1/0;
return 0;
}
我正在运行的命令:
# gcc Code.c -o Code.out -std=c99
# ./Code.out 2>err.log 1>out.log
Floating point exception (core dumped)
如您所见,上面的错误仅在 shell 上打印,但不重定向到err.log
. 此外,err.log 中没有任何内容。我的问题是为什么这不在 stderr 流中打印?根据我的理解,如果它没有在 stderr 中打印,我将无法通过 process.getErrorStream 读取它。无论代码执行生成的错误消息是什么,我都想将其展示给最终用户。