Manipulação de falhas de segmentação

Eu tenho um aplicativo que eu uso para capturar qualquer falha de segmentação ou ctrl-c. Usando o código abaixo, eu sou capaz de pegar a falha de segmentação, mas o manipulador está sendo chamado novamente e novamente. Como posso pará-los? Para sua informação, não quero sair do meu aplicativo. Eu só posso tomar cuidado para liberar todos os buffers corrompidos.

É possível?

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

e o manipulador é assim.

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

Aqui para sinal de falha de segmentação, handler está sendo chamado várias vezes e como óbvio MyfreeBuffers () me dá erros para liberar a memória já liberada. Eu só quero liberar apenas uma vez, mas ainda não quero sair do aplicativo.

Por favor ajude.

questionAnswers(7)

yourAnswerToTheQuestion