2012-11-21 30 views
0

在某些应用程序的开发过程中,我们需要可能获得完整的核心转储而不完全停止程序的执行。来自C/C++程序的内联核心转储生成

当然,有些情况会产生核心转储,但是我们并不是在谈论内存损坏等问题。

我所希望做的是发出一个信号,该程序并没有产生一个完整的核心或最小冲击程序执行

这可能吗?如果是这样如何?

+0

这是操作系统特定的。什么OS? – Gene

+3

你可以'fork'然后'放弃'另一个进程。 –

+0

核心转储是什么意思?完整的内存转储?堆栈跟踪? – 2012-11-21 19:09:54

回答

0

Coredumpber是Linux,显然,如果这是你的操作系统一个伟大的想法。

对于其他类POSIX系统中,这样的事情应该很好地工作:

#include <stdlib.h> 
#include <process.h> 

// Fork and abort for a core dump. This process keeps running. 
if (fork() == 0) abort(); 

当然环境必须设置倾倒在SIGABRT核心。你也可以尝试raise(SIGTERM),就像kill -9

+0

我想你是指'raise(SIGKILL)',但我明白了 – Karlson