我有一個測試程序,用於處理信號的C庫的一部分。在這個測試程序中有很多代碼 - 非常多,我覺得在這裏發佈它只會讓我更難回答我的問題。SIGSEGV發送兩次 - 處理後崩潰程序
基本上發生的事情是,我迫使系統在後臺線程中向我發送一個SIGSEGV。我處理這個信號,然後測試結束。主線程將等待這個信號處理程序的一部分是重新啓動主線程。當主線程重新啓動我恢復默認信號處理程序signal(SIGSEGV, SIG_DFL)
然後我得到另一個 SIGSEGV。
我知道我有很多代碼,這很可能是我的錯,但是爲什麼SIGSEGV會觸發兩次?當我引起其他信號時,它不會發生(儘管我沒有嘗試過所有這些信號)。
爲了說明我在OS X上編寫C語言,使用gcc編譯。