我是一名新手,對linux有基本的瞭解。如何讓進程忽略某些信號(如SIGHUP,SIGABRT,SIGABORT,SIGINT等)。
每當內核遇到特定進程的信號時,首先會檢查特定進程的進程控制塊(PCB)中的信號處理程序表。如果信號處理程序已註冊,它將調用該函數。如果標誌是SIG_DEFAULT,那麼它調用在內核的全局信號表中註冊的信號處理程序。如果標誌是SIG_IGNORE,那麼內核會忽略特定進程的信號。
所有的信號都有內核默認的信號處理程序已經在信號表中進行了註冊。
我只想知道進程如何將標誌從SIG_DEFAULT更改爲SIG_IGNORE。請解釋機制(使用系統調用或更改信號表或PCB)。下一次當信號再次被捕獲時,內核會做什麼優化。
用戶進程?它調用'signal'或'sigaction'來改變配置。 – Duck
編譯器在再次捕獲信號時是否有任何優化? –
不是我知道,但我想你可以檢查包裝sys_calls的glibc源。 – Duck