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.