我正在使用这个脚本来测试陷阱:
#!/bin/bash
trap "echo segfault!" SIGSEGV
g++ forever.cpp
./a.out
而forever.cpp
只是运行一个递归函数:
void forever(){
forever();
}
int main(){
forever();
}
但是它给出 Segmentation fault: 11
而不是打印 segfault
。我不确定为什么。
最佳答案
bash 陷阱将捕获 bash 本身的段错误,而不是从 bash 派生的进程中。
在这种情况下,您正在生成一个进程,并且该进程出现段错误。您需要在 C 程序 forever.cpp 中安装一个信号处理程序来捕获它。
关于c++ - 陷阱无法捕获 SIGSEGV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26485793/