Выгрузка ядра и завершение процесса с использованием сигналов SIGSEGV или SIGABRT

0

Текущая реализация моего процесса,

Если в процессе есть логическая ошибка, он заглушит ядро и уйдет, намеренно обращаясь к недопустимой области памяти. (передача сигнала SIGSEGV)

 char* pzCoreMsg = "Logic Error";
 char* zTmp = NULL;
 strcpy(zTmp, pzCoreMsg);

Другие возможные варианты реализации

1) Функция raise(SIGABRT) также является возможным решением. (отправка сигнала SIGABRT)

2) Также можно вызвать функцию abort() (отправка сигнала SIGABRT)

Существует еще много решений. Я хочу познакомиться с лучшим методом, чтобы заглушить ядро и прекратить процесс

  • 1
    Вызов abort() является обычным способом.
Теги:
posix

1 ответ

4
Лучший ответ

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню