c++ - 陷阱无法捕获 SIGSEGV

标签 c++ bash segmentation-fault bash-trap

我正在使用这个脚本来测试陷阱:

#!/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/

相关文章:

c++ - 在同一函数中引用范围外的局部变量是否可以?

c++ - 什么适用于 C++ 中的 Web 开发

bash - "(head; tail) < file"是如何工作的?

c - 我的代码中存在段错误?

c - 字符串声明段错误

可变类型列表前缀的 c++ std::tuple

c++ - Excel 自动化。如何复制多个单元格?

linux - 在 Bash 管道中分块读取标准输入

bash - Homebrew 软件,-bash : qemu: command not found OSX El Capitan

c - 当我在 malloc 中取消引用 NULL 指针时,为什么我的程序没有出现段错误?