(Упражнение по программированию) Стандартная библиотека C (Plauger):и обработка SIGABRT? - PullRequest
0 голосов
/ 04 октября 2018

Мне нужно прояснить упражнение по программированию в Стандартной библиотеке C, но мне не хватает знаний и ресурсов для этого.Глава о реализации <assert.h>, а затем о ее тестировании.Реализация assert завершает программу, вызывая abort, когда ее аргумент равен 0.

Вот упражнение:

Автор просит читателя написать обработчик сигнала для SIGABRT, который:

"Записывает приглашение

Продолжить (да / нет)?

в стандартный поток ошибок и считывает ответ из стандартного входного потока. Если ответ« да »', обработчик должен восстановить себя и вернуть управление функции прерывания. "

Мое понимание состоит в том, чтобы написать обработчик сигнала, который продолжает выполнение программы после того, как утверждение окажется неверным, предположительно для отладки.Но он также хочет, чтобы обработчик вернул управление на abort, что всегда приведет к аварийному завершению.

Я просматривал главы учебника по прерыванию и сигналам, но похоже, что abort всегда завершит программу.Так зачем спрашивать пользователя, хотят ли они продолжить, и зачем восстанавливать обработчик, если обработчик все равно завершает программу?

...