【发布时间】:2013-09-04 06:43:01
【问题描述】:
我是新手,对linux有基本的了解。
每当内核遇到特定进程的信号时,首先它会检查特定进程的进程控制块(PCB)中的信号处理程序表。如果信号处理程序已注册,它将调用该函数。如果标志是 SIG_DEFAULT 则它调用在内核的全局信号表中注册的信号处理程序。如果标志是 SIG_IGNORE ,那么内核只是忽略特定进程的信号。
所有信号都有默认的信号处理程序,内核已经在信号表中注册了。
我只想知道进程如何将标志从 SIG_DEFAULT 更改为 SIG_IGNORE。请解释机制(使用系统调用或信号表或PCB中的更改)。下次再次捕获信号时,内核会进行哪些优化。
【问题讨论】:
-
用户进程?它调用
signal或sigaction来改变配置。 -
编译器在再次捕获信号时是否进行了优化??
-
我不知道,但我想您可以检查包装 sys_calls 的 glibc 源代码。