2012-11-21 51 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