2010-04-09 136 views
1

例如調用exit(100)將退出與狀態100的應用程序,並調用raise(SIGABRT)設置退出狀態終止,狀態134,同時創建一個核心轉儲的應用程序。但是,如果我想要狀態爲100的核心轉儲或任何其他任意值。我怎樣才能做到這一點 ?我知道有觸發核心轉儲幾個信號,但他們似乎有固定的退出狀態。當創建核心轉儲

+2

你爲什麼要這麼做?關鍵在於能夠判斷是否退出核心競爭。大多數注意退出狀態的程序應該區分零(成功)和非零(失敗),但某些程序可能有興趣知道在轉儲核心時它是否失敗,在這種情況下,此特定的退出代碼是有用的。並強制其他退出代碼會欺騙依賴它的程序。 – 2010-04-09 13:50:21

+0

是的,但這不適用於已發佈的軟件,僅用於內部調試才能更容易地對轉儲進行分類,而無需使用外部工具進行實際檢查。 – Zitrax 2010-04-09 14:02:02

回答

2

貌似134等於(128+6)和euqals到((1<<7) | 6)(其中#define SIGABRT 6
共發生?

+1

不是巧合,請參閱http://stackoverflow.com/questions/1101957/1104641#1104641和其他人。 – ephemient 2010-04-10 02:43:56

2

好吧,我想你可以fork(),並有家長來電_exit(100),和孩子通話abort() ...

我的評論說,這是一個壞主意,但同意。