Мне нужно прояснить упражнение по программированию в Стандартной библиотеке C, но мне не хватает знаний и ресурсов для этого.Глава о реализации <assert.h>
, а затем о ее тестировании.Реализация assert
завершает программу, вызывая abort
, когда ее аргумент равен 0.
Вот упражнение:
Автор просит читателя написать обработчик сигнала для SIGABRT, который:
"Записывает приглашение
Продолжить (да / нет)?
в стандартный поток ошибок и считывает ответ из стандартного входного потока. Если ответ« да »', обработчик должен восстановить себя и вернуть управление функции прерывания. "
Мое понимание состоит в том, чтобы написать обработчик сигнала, который продолжает выполнение программы после того, как утверждение окажется неверным, предположительно для отладки.Но он также хочет, чтобы обработчик вернул управление на abort
, что всегда приведет к аварийному завершению.
Я просматривал главы учебника по прерыванию и сигналам, но похоже, что abort
всегда завершит программу.Так зачем спрашивать пользователя, хотят ли они продолжить, и зачем восстанавливать обработчик, если обработчик все равно завершает программу?