Почему ни один из сигналов, поданных на приложение, не вышел НОРМАЛЬНО?
Я пишу библиотеку, регистрирую обработчик сигнала в функции, которую приложение всегда вызывало. Я регистрирую следующие сигналы:
- 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()
,