세그멘테이션 오류 또는 Ctrl-c를 잡는 데 사용하는 응용 프로그램이 있습니다. 아래 코드를 사용하여 세분화 오류를 catch 할 수 있지만 핸들러가 계속 호출됩니다. 어떻게 그들을 막을 수 있습니까? 귀하의 정보를 위해 신청서를 종료하고 싶지 않습니다. 난 그냥 모든 손상된 버퍼를 무료로 돌볼 수 있습니다.세그먼테이션 오류 처리
가능합니까?
void SignalInit(void)
{
struct sigaction sigIntHandler;
sigIntHandler.sa_handler = mysighandler;
sigemptyset(&sigIntHandler.sa_mask);
sigIntHandler.sa_flags = 0;
sigaction(SIGINT, &sigIntHandler, NULL);
sigaction(SIGSEGV, &sigIntHandler, NULL);
}
및 처리기가 이렇게됩니다. 여기서 분할 오류 신호
void mysighandler()
{
MyfreeBuffers(); /*related to my applciation*/
}
이 핸들러는 여러 번 명백 MyfreeBuffers()이라고 이미 해제 된 메모리를 해제 나에게 오류를 제공하고있다. 난 단지 한 번만 해방하고 싶지만 여전히 응용 프로그램을 종료하고 싶지 않습니다.
도와주세요.
좋은 해결책입니다. 특히 "코어 덤프 (core dump)를 충돌시키고 분석하자" – dturvene