Segmentierungsfehlerbehandlung

Ich habe eine Anwendung, mit der ich Segmentierungsfehler oder Strg-C abfangen kann. Mit dem folgenden Code kann ich den Segmentierungsfehler abfangen, aber der Handler wird immer wieder aufgerufen. Wie kann ich sie aufhalten? Zu Ihrer Information, ich möchte meine Anwendung nicht beenden. Ich kann mich nur darum kümmern, alle beschädigten Puffer freizugeben.

Ist es möglich?

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

und Handler geht so.

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

Hier für das Segmentierungsfehlersignal wird der Handler mehrmals aufgerufen, und wie offensichtlich ist, gibt MyfreeBuffers () mir Fehler zum Freigeben von bereits freigegebenem Speicher. Ich möchte nur einmal befreien, aber die Anwendung trotzdem nicht beenden.

Bitte helfen Sie.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage