Obsługa błędów segmentacji

Mam aplikację, której używam do przechwycenia błędu segmentacji lub ctrl-c. Korzystając z poniższego kodu, mogę przechwycić błąd segmentacji, ale procedura obsługi jest wywoływana ponownie i ponownie. Jak mogę ich powstrzymać. Dla twojej informacji nie chcę wychodzić z mojej aplikacji. Po prostu mogę zadbać o uwolnienie wszystkich uszkodzonych buforów.

Czy to możliwe?

<code>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);

}
</code>

i handler idzie w ten sposób.

<code>void mysighandler()
{
MyfreeBuffers(); /*related to my applciation*/
}
</code>

Tutaj dla sygnału błędu segmentacji, obsługa jest wywoływana wiele razy i jak oczywiste MyfreeBuffers () daje mi błędy w zwalnianiu już uwolnionej pamięci. Chcę tylko raz zwolnić, ale nadal nie chcę wychodzić z aplikacji.

Proszę pomóż.

questionAnswers(7)

yourAnswerToTheQuestion