Разница между методами raise(SIGABRT) и abort()


Я знаю, что оба метода raise(SIGABRT) и abort() отправят сигнал SIGABRT самому себе. Но есть некоторая разница между этими двумя функциями. (например, функция abort() разблокирует сигнал SIGABRT, где as raise(SIGABRT) этого не делает.)

Каковы другие различия между raise(SIGABRT) и abort() методами

1 3

1 ответ:

Главное отличие это то, что abort() даже завершает процесс, если SIGABRT игнорируется.

Дословно из man abort:

Если сигнал SIGABRT игнорируется или перехватывается возвращающим обработчиком, функция abort() все равно завершит процесс. Он делает это, восстанавливая диспозицию по умолчанию для SIGABRT и затем поднимая сигнал для a второй раз.