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

Dumping a core and terminating a process using SIGSEGV or SIGABRT signals

本文关键字:核心 终止 进程 转储 信号 SIGSEGV SIGABRT 使用      更新时间:2023-10-16

我的流程的当前实现

如果进程中出现逻辑错误,它将使内核变哑,并通过故意访问无效内存区域而退出。(发送SIGSEGV信号)

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

的其他可能实现

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

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

可能还有更多的解决方案。我想知道让核心静音并终止进程

的最佳方法

不依赖未定义的行为,只需调用abort()即可。默认情况下,它将引发SIGABRT并转储core。abort()还将取消阻止SIGABRT,如果信号被忽略(或者如果信号处理程序返回),它将恢复默认处理并再次引发它。真的没有必要做任何进一步的事情。