Какие процедуры очистки запускаются, когда я завершаю запущенный процесс Linux с перерывом?

#c #linux #exit

#c #linux #выход

Вопрос:

Выполняются ли процедуры очистки, зарегистрированные в atexit() , когда программа завершается отправкой прерывания (Ctrl C )?

Ответ №1:

Нет. Вам необходимо установить обработчик для сигнала SIGINT.

Комментарии:

1. Как мне установить обработчик для этого?

2. используя функции sigaction или signal . Но обработчик сигналов не может выполнять произвольные действия (он мог бы siglongjmp или установить volatile sigatomic_t переменную и т.д. Это невозможно printf или malloc )