如何使进程忽略某些信号(如SIGHUP,SIGABRT,SIGABORT,SIGINT等)

时间:2013-08-31 18:28:33

标签: c++ c linux kernel

我是新手,对linux有基本的了解。

每当内核遇到特定进程的信号时,首先它检查特定进程的进程控制块(PCB)中的信号处理程序表。如果信号处理程序已注册,则调用该函数。如果该标志是SIG_DEFAULT,则它调用在内核的全局信号表中注册的信号处理程序。如果该标志是SIG_IGNORE,那么内核只是忽略特定进程的信号。

所有信号都有内核已在信号表中注册的默认信号处理程序。

我只想知道进程如何将标志从SIG_DEFAULT更改为SIG_IGNORE。请解释机制(使用系统调用或信号表或PCB中的更改)。下次再次捕获信号时,内核会进行哪些优化。

1 个答案:

答案 0 :(得分:1)

调用signal功能。请注意,某些信号可能最终无法被忽略。