我编写了一个库,在应用程序总是调用的函数中注册信号处理程序。我记录以下信号:
西格奎特
西格特
西格基尔
西格尔德
叹气
信号停止
西格特
所有信号处理程序都指向同一个函数,如下所示:

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/

10-10 23:24
查看更多