【发布时间】:2012-04-29 11:36:47
【问题描述】:
我有一个应用程序,用于捕获任何分段错误或 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() 给我释放已释放内存的错误。我只想释放一次,但仍然不想退出应用程序。
请帮忙。
【问题讨论】:
标签: c linux signals signal-handling