2013-11-26 56 views
0

電流我的過程的執行情況,傾倒芯和使用SIGSEGV或SIGABRT信號

如果在這個過程中,它會啞核心邏輯錯誤並退出通過故意訪問無效存儲區終止的處理。 (發送信號SIGSEGV)

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

其他可能的實施

1)調用raise(SIGABRT)功能也是可能的解決方案。 (發送信號SIGABRT)

2)另外,也可以調用abort()功能(發送SIGABRT信號)

可以有許多更多的解決方案存在。我想知道最好的方法來愚弄核心和終止一個過程

+1

調用['abort()'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/abort.html)是常用的方法。 –

回答

4

而不是依靠未定義的行爲,只需撥打abort()。它會默認引發SIGABRT和轉儲核心。 abort()也會解除阻止SIGABRT,並且如果信號被忽略(或者如果信號處理程序返回),它將恢復默認處置並再次提升它。真的不需要做進一步的事情。