c - 在 Linux 中重新传播捕获的信号

标签 c linux signals

我正在尝试将 sigwait() 用于 SIGSEGV 和其他信号,然后执行某些操作(比如将时间戳写入文件)。然后,我希望程序表现得好像从未捕获到信号一样(例如,当 SIGSEGV 发生时生成一个核心转储——假设系统配置为核心转储)。

我通读了几个联机帮助页,但没有看到明显的方法。

有什么建议吗?

提前致谢!

最佳答案

您可以注册一个不会导致程序崩溃的信号处理程序。收到信号后,您将进入信号处理程序,并在执行信号处理程序(您说的写入文件)后,您将重新进入您中断的程序。

如果您想要一个核心转储,您可以使用 linux core(5) 命令,它会在您的信号处理程序中创建一个核心转储,而不会结束您的进程。

http://www.alexonlinux.com/signal-handling-in-linux#signal_masks

关于c - 在 Linux 中重新传播捕获的信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16543970/

相关文章:

c - 如何使用左移按位运算符获取输入?

linux - "sudo"命令如何工作?

c - 函数 signal() 如何在 C 中与 SIGINT 一起工作

c++ - 信号功能错误

Java - 将信号从Thread发送到Swing组件

c++ - 在开发国际象棋程序时,用给定的值初始化下面的方向数组有什么意义?

c++ - 在 Linux 中发送空的 Socket 缓冲区?

c - Zeroconf 名称解析

linux - Angular/Jasmine : $httpBackend. expectGET 适用于 Mac,不适用于 Linux

linux -/dev/hda1 在启动时从我的 static/dev 目录中消失