我正在尝试将 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/