linux進程管理之訊號處理(2)

來源:互聯網
上載者:User

另外,核心經常使用force_sig_info()/force_sig()來給進程發送訊號.這樣的訊號經常不可以忽略,不可以阻塞.我們來看一下它的處理.代碼如下:

int force_sig_info(int sig, struct siginfo *info, struct task_struct *t)
{
unsigned long int flags;
int ret, blocked, ignored;
struct k_sigaction *action;
spin_lock_irqsave(&t->sighand->siglock, flags);
//取進程的訊號的處理函數
action = &t->sighand->action[sig-1];
//如果該訊號被忽略或者該訊號被阻塞
ignored = action->sa.sa_handler == SIG_IGN;
blocked = sigismember(&t->blocked, sig);
if (blocked || ignored) {
//重訊號處理函數為預設的處理
action->sa.sa_handler = SIG_DFL;
//如果訊號被屏弊
if (blocked) {
//清除訊號屏弊位
sigdelset(&t->blocked, sig);
//重新計算進程是否有末處理的訊號
recalc_sigpending_and_wake(t);
}
}
//"特殊"的訊號發送
ret = specific_send_sig_info(sig, info, t);
spin_unlock_irqrestore(&t->sighand->siglock, flags);
return ret;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.