我有一个应用程序,用于捕获任何分段错误或 ctrl-c。使用下面的代码,我能够捕获分段错误,但处理程序被一次又一次地调用。我怎么能阻止他们。为了您的信息,我不想退出我的应用程序。我只需要注意释放所有损坏的缓冲区。
是否可以?
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);
}
处理程序是这样的。
void mysighandler()
{
MyfreeBuffers(); /*related to my applciation*/
}
在这里,对于分段错误信号,处理程序被多次调用,显然 MyfreeBuffers() 给了我释放已释放内存的错误。我只想释放一次,但仍然不想退出应用程序。
请帮忙。