ulyssesric

關於ulyssesric

對不起,我忘了寫自我介紹!

【Mac密技】三招輕鬆解決各種軟體當機、系統出錯問題

回應

本篇不是很正確。

Force Quit 主要是送出 Apple Event 的 Quit 信號,
Activity Monitor 則是會檢查程序是否有登記 Event handler,
如果沒有登記 handler,則會送出 UNIX 中斷信號 SIGTERM。
否則效果和 Force Quit 相同。

Apple Event 和 SIGTERM 都是屬於「可被攔截」的信號,
可由應用程式自行設定旗標擷取信號,
信號擷取下來以後同樣是由應用程式自行決定該怎麼處理。
所以如果碰到寫得特爛的程式,
例如說 blocking thread 沒有設定跳出點就直接呼叫 join,
一樣會卡。

Terminal 的作法則是送出 SIGKILL 信號,
這個信號不可被攔截且不可忽略,
一旦送出程序就絕對腰斬,
後果就是可能會有寫到一半的檔案這種狀況。