2010-08-30 46 views

回答

4

默認操作是退出進程。如果你處理段錯誤,我想你可以嘗試安排它發生的線程終止。但是,由於導致段錯誤自然發生的唯一因素(與raisekill相對)源於未定義的行爲,程序處於不確定狀態,您不能依賴於能夠恢復任何內容。

0

爲進程調用segfault處理函數。如果你沒有做任何特別的事情,操作系統將會終止進程並收回資源。

+2

'fork'創建一個新進程,而不是一個線程。 – 2010-08-30 22:08:48

+0

哈哈,哎呀。傻我。 – nmichaels 2010-08-31 13:51:31

2

我認爲所有主要操作系統的默認操作是終止進程。但是,您可以設想安裝(例如使用signal)替代處理程序,該處理程序僅終止該線程。當然,一旦出現分段錯誤,行爲通常會變得不確定,嘗試繼續是有風險的。

3

分段錯誤的正常處理涉及過程的終止。這意味着他們都被終止。

1

由於非法執行而生成的信號由內核同步處理。所以,即使兩個線程同時產生seg錯誤,只有一個會得到''。