Обработка ошибок сегментации

У меня есть приложение, которое я использую, чтобы поймать любую ошибку сегментации или Ctrl-C. Используя приведенный ниже код, я могу уловить ошибку сегментации, но обработчик вызывается снова и снова. Как я могу их остановить. Для вашей информации я не хочу выходить из приложения. Я просто могу позаботиться об освобождении всех поврежденных буферов.

Является ли это возможным?

<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>

и обработчик идет так.

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

Здесь для сигнала ошибки сегментации, обработчик вызывается несколько раз, и, как видно, MyfreeBuffers () выдает мне ошибки для освобождения уже освобожденной памяти. Я просто хочу освободить только один раз, но все еще не хочу выходить из приложения.

Пожалуйста помоги.

Ответы на вопрос(7)

Ваш ответ на вопрос