Текущая реализация моего процесса,
Если в процессе есть логическая ошибка, он заглушит ядро и уйдет, намеренно обращаясь к недопустимой области памяти. (передача сигнала SIGSEGV)
char* pzCoreMsg = "Logic Error";
char* zTmp = NULL;
strcpy(zTmp, pzCoreMsg);
Другие возможные варианты реализации
1) Функция raise(SIGABRT)
также является возможным решением. (отправка сигнала SIGABRT)
2) Также можно вызвать функцию abort()
(отправка сигнала SIGABRT)
Существует еще много решений. Я хочу познакомиться с лучшим методом, чтобы заглушить ядро и прекратить процесс
Вместо того, чтобы полагаться на неопределенное поведение, просто вызывайте abort()
. По умолчанию он будет создавать SIGABRT и ядро дампа. abort()
также разблокирует SIGABRT, и если сигнал будет проигнорирован (или если обработчик сигнала вернется), он восстановит настройку по умолчанию и снова поднимет ее. Не нужно больше ничего делать.
abort()
является обычным способом.