gpt4 book ai didi

c++ - 终端(bash)如何知道引发了什么异常

转载 作者:行者123 更新时间:2023-12-01 14:49:39 25 4
gpt4 key购买 nike

考虑以下代码:

int main() {
auto f = 0;
auto g = 1 / f;
}

运行它会执行以下操作:

]$ g++ main.cpp                                   
]$ ./a.out
Floating point exception (core dumped)
]$ echo $?
136

现在,我知道 FPE 的值是 8。
]$ man 7 signal
...
SIGFPE 8 Core Floating point exception
...

我很好奇 bash 如何知道抛出了什么异常。谢谢!

最佳答案

这不是抛出的异常。进程被一个信号终止。

父进程在其子进程终止时收到通知;并且终止的原因从 wait() 返回系统调用(父进程用于此目的)。这包括信号编号,如果子进程被信号终止。

您可以从

$ man 2 wait

手册页:
   WIFSIGNALED(wstatus)
returns true if the child process was terminated by a signal.

WTERMSIG(wstatus)
returns the number of the signal that caused the child process
to terminate. This macro should be employed only if WIFSIGNALED
returned true.

关于c++ - 终端(bash)如何知道引发了什么异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58887096/

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