2013-03-03 56 views
0

如果我們從shell啓動一個前臺進程,並使用ctrl-c傳遞一個它不處理並因此退出的SIGINT,shell如何知道進程是否被終止由SIGINT提供。我的假設是,這個過程不會通過調用exit來進入殭屍。shell如何將SIGINT識別爲其作業之一

感謝

回答

0

shell使用wait(2)家族的函數來等待子進程終止/終止,並檢索殺死它的信號(如果有的話)。

+0

但在這裏進程沒有退出調用exit(),所以等待方法不會得到任何回報。 – 0xhacker 2013-03-03 17:55:41

+0

是的,請閱讀:https://www.kernel.org/doc/man-pages/online/pages/man2/wait.2.html – Intrepidd 2013-03-03 17:56:59

0

不處理信號的應用程序,實際執行的默認處理程序(它可以殺死應用程序中的SIGINT的情況下)。嚮應用程序發送信號並調用處理程序(無論是默認的還是由應用程序設置的)由操作系統處理,因此操作系統可以注意哪個信號會中止應用程序,例如相應地設置退出代碼。 shell只顯示退出代碼,但它是設置它的操作系統。

相關問題