Linux 为什么应用程序上未发出任何正常退出的信号?
我编写了一个库,在应用程序总是调用的函数中注册信号处理程序。我记录了以下信号:Linux 为什么应用程序上未发出任何正常退出的信号?,linux,signals,Linux,Signals,我编写了一个库,在应用程序总是调用的函数中注册信号处理程序。我记录了以下信号: 西格金 信号 西格基尔 西格尔德 叹息 西格斯托普 西格特姆 所有信号处理程序指向相同的函数,如下所示: signal(SIGQUIT,signal_handler); signal(SIGINT,signal_handler); signal(SIGKILL,signal_handler); .... 当我运行应用程序并正常退出时,根本没有发出任何信号。 但是如果我用中断它,SIGINT将被触发,我的信号处理
- 西格金
- 信号
- 西格基尔
- 西格尔德
- 叹息
- 西格斯托普
- 西格特姆
signal(SIGQUIT,signal_handler);
signal(SIGINT,signal_handler);
signal(SIGKILL,signal_handler);
....
当我运行应用程序并正常退出时,根本没有发出任何信号。
但是如果我用
中断它,SIGINT
将被触发,我的信号处理程序也将被触发。
为什么应用程序正常退出时没有任何信号发出?因为它就是这样工作的。只有在发生异常情况时才会发出信号
如果您想在程序正常退出时运行某个程序,请尝试使用
atexit()
或on_exit()
,这让我大吃一惊。你真的给了我一个教训,非常感谢!