使用SIGSEGV或SIGABRT信号转储核心并终止进程

时间:2013-11-26 09:11:00

标签: c++ c posix

我的流程的当前实施,

如果进程中存在逻辑错误,则会通过故意访问无效内存区域来使内核失效并退出。 (发送SIGSEGV信号)

 char* pzCoreMsg = "Logic Error";
 char* zTmp = NULL;
 strcpy(zTmp, pzCoreMsg);

其他可能的实施

1)调用raise(SIGABRT)函数也是一种可能的解决方案。 (发送SIGABRT信号)

2)也可以调用abort()函数(发送SIGABRT信号)

可能存在更多解决方案。我想了解愚蠢核心和终止进程的最佳方法

1 个答案:

答案 0 :(得分:4)

不要依赖未定义的行为,只需致电abort()即可。它默认会引发SIGABRT和转储核心。 abort()也将解锁SIGABRT,如果信号被忽略(或者信号处理程序返回),它将恢复默认处置并再次提升。实际上没有必要再做任何事了。