我编写了一个库,在应用程序总是调用的函数中注册信号处理程序。我记录以下信号:
西格奎特
西格特
西格基尔
西格尔德
叹气
信号停止
西格特
所有信号处理程序都指向同一个函数,如下所示:
signal(SIGQUIT,signal_handler);
signal(SIGINT,signal_handler);
signal(SIGKILL,signal_handler);
....
当我运行应用程序并正常退出时,根本就没有任何信号。
但如果我用
<ctrl-c>
中断它,SIGINT
将被触发,我的信号处理程序也将被触发。当应用程序正常退出时,为什么没有出现任何信号?
最佳答案
因为这就是它的工作原理。只有在发生异常情况时才会发出信号。
如果你想在程序正常退出时运行一些东西,请尝试使用atexit()
或on_exit()
。
关于linux - 为什么没有任何在应用程序上发出的信号正常退出?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23507641/