推荐的信号要赶上?

目前,我抓住SIGSEGV,给自己发一封电子邮件,然后abort(),这样我就可以得到一个核心文件并调试我的程序。 (如果我没有抓到,我将无法知道我的特定程序是否已被发现。我的程序是在与我自己的服务器不同的服务器上运行的。)

是否有任何其他信号我应该抓住调试或我应该知道的原因?

是什么让你认为SEGV还没有破坏你的程序存储器,以至于尝试发送电子邮件不会失败?

您应该遵循责任分工实践,并从完全不同的计划中监控您的计划。

只需要一个(非常简单,因此失败的可能性很小)程序,它会检查以确保您的主程序仍在运行,如果没有,则向您发送该电子邮件。 您甚至可以进行纵深防御并运行两个检查程序,这两个检查程序都会检查主程序和彼此。

如果你像我一样偏执狂,你甚至可以在不同的机器上运行它们:-)

好吧,如果您的程序附加到控制台,您可能希望捕获SIGINT以转储/清除您正在扣留的任何缓冲区/日志。

您可能不应该捕获SIGSEGV / SIGBUS等。

你应该做的是编写一个包装器程序,它将检测子进程是否从信号中退出,并确定问题,然后该进程可以执行任何所需的操作。

如果它是服务器进程,您可能还希望在意​​外失败时重新启动。