gpt4 book ai didi

java - 如何从java捕获错误并打印c程序触发器的流

转载 作者:太空宇宙 更新时间:2023-11-03 23:46:53 25 4
gpt4 key购买 nike

C 代码

#include <stdio.h>

int main() {
printf("Expected to print");
int a = 1/0;
return 0;
}

使用编译

gcc Test.c

java 运行

p = Runtime.getRuntime().exec(cmd);

这里cmd[/bin/bash, -c, ./a.out]
然后我捕获进程的 errorStream p.getErrorStream()但是 errorStream 没有 Floating point exception 如果我们运行它会得到

./a.out

从控制台

最佳答案

Floating point exception 不是从程序中打印出来的,而是由 bash 打印的。如果您以交互方式启动程序并且程序获得了 FPE bash 打印 FPE 消息。

使用 bash -c a.out bash 只调用 exec() 函数之一而不调用 fork() 之前,因此直接替换为 a.out 因此它无法打印出任何内容。

如果我使用 Runtime.getRuntime().exec(new String[]{"/bin/bash", 我在 Java 错误流中得到 浮点异常(核心转储) "-i","-c","echo -n;./a.out"});.

使用什么都不做的echo -nbash 被迫保持 Activity 状态,因此可以打印出FPE 消息。 -ibash 设置为交互模式。

关于java - 如何从java捕获错误并打印c程序触发器的流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30409189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com