Я зарегистрировал обработчик SIGSEGV
, используя fprintf
, чтобы напечатать некоторое сообщение, а затем выйти. Процесс распечатывает сообщение, но не выходит. Он заблокирован до exit()
.Обработчик SIGSEGV не может выйти
Не могу использовать exit()
, чтобы закончить процесс, как правило, в обработчике?
void sigsegv__handler(){
fprintf(stderr, "SIGSEGV , TID: %d,PID: %d\n", TEST_ID, getpid());
exit(1);
}
избежать Printf в обработчике сигнала, вы будете наслаждаться чтением это [ «Использование реентрантных функций для безопасного обращения сигнала»] (HTTP: //www.ibm.com/developerworks/linux/library/l-reent/index.html#N101CA) –