我现在一直在研究信号,但我想了解它们是如何工作的,我需要深入回答这个问题
如果进程使用libc函数向另一个进程发送信号,例如。
1 - 这个过程能否正常发送信号而不进入内核空间,或者当它想发送信号时是否必须进入内核空间?
2 - 如果必须先进入内核,那么采取了哪些步骤?
3 - 这些信号处理程序在哪里?它们是存在于用户空间还是内核空间中,以及默认的信号处理程序呢?
4 - 当一个过程收到信号时?它是否必须通过内核才能执行信号处理程序?
答案 0 :(得分:2)
1最终通过系统调用发送信号。所有系统调用都由内核执行。
2不确定自己有多深。第一步是让内核确保允许发送信号,最后一步是让内核自行处理或将信号传递给目标进程。
3大多数信号处理程序都在用户空间中,除了内核考虑的SIGSTOP和SIGKILL之外。
4不,没有这样的要求。该过程要么忽略或处理信号。处理程序是默认处理程序或自定义处理程序。