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()

,这让我大吃一惊。你真的给了我一个教训,非常感谢!