Почему ни один из сигналов, поданных на приложение, не вышел НОРМАЛЬНО?

Я пишу библиотеку, регистрирую обработчик сигнала в функции, которую приложение всегда вызывало. Я регистрирую следующие сигналы:

  • SIGQUIT
  • SIGINT
  • SIGKILL
  • SIGCHLD
  • SIGHUP
  • SIGSTOP
  • SIGTERM

Все обработчики сигналов указывают на одну и ту же функцию следующим образом:

signal(SIGQUIT,signal_handler);
signal(SIGINT,signal_handler);
signal(SIGKILL,signal_handler);
....

Когда я запускаю приложение и завершаю работу НОРМАЛЬНО, никаких сигналов не возникает вообще. Но если я сломаю это с <ctrl-c>, SIGINT будет поднят и мой обработчик сигнала тоже сработает. Почему при нормальном выходе из приложения не возникает никаких сигналов?

1 ответ

Решение

Потому что так все и работает. Сигналы поднимаются только тогда, когда происходит что-то ненормальное.

Если вы хотите что-то запустить при нормальном выходе из программы, попробуйте использовать atexit() или же on_exit(),

Другие вопросы по тегам