#c #linux #exit
#c #linux #выход
Вопрос:
Выполняются ли процедуры очистки, зарегистрированные в atexit()
, когда программа завершается отправкой прерывания (Ctrl C )?
Ответ №1:
Нет. Вам необходимо установить обработчик для сигнала SIGINT.
Комментарии:
1. Как мне установить обработчик для этого?
2. используя функции
sigaction
илиsignal
. Но обработчик сигналов не может выполнять произвольные действия (он мог быsiglongjmp
или установитьvolatile sigatomic_t
переменную и т.д. Это невозможноprintf
илиmalloc
)