但是这个问题没有得到正确的回答。相反,它转而建议如何捕捉信号。
所以只是澄清一下:我已经做了任何需要做的事情来处理信号。我有一个应用程序,它派生一个通过管道监视主进程的守护进程。如果一个主进程崩溃(例如分段错误),它有一个信号处理程序将所有需要的信息写入管道并中止。
目标是在应用程序发生不良情况时获得尽可能多的信息,而不会干扰“正常”操作,例如 SIGHUP、SIGUSR1 等。
所以我的问题是:我应该捕捉哪些信号? 我的意思是如果我没有捕捉到它们的信号,无论如何都会导致应用程序中止。
到目前为止,我已经提出了以下列表:
- SIGINT(^C,用户启动,但仍需了解)
- SIGTERM(
kill <pid>
来自 shell 或 AFAIK,可能是 OutOfMemory 的结果) - SIGSEGV
- 西吉尔
- SIGFPE
- 信号总线
- SIGQUIT
有人知道我是否想念什么吗?kill -l
有很多... :)