Linux 信号如何工作
我研究信号已经有一段时间了,但我想了解它们到底是如何工作的,我需要一些关于这个问题的深入答案 例如,如果一个进程使用libc函数向另一个进程发送信号 1-该进程是否可以正常发送信号而不进入内核空间,或者当它想要发送信号时是否必须进入内核空间 2-如果必须首先进入内核,那么需要采取哪些步骤 3-这些信号处理器在哪里?它们是否存在于用户空间或内核空间中?默认信号处理程序如何 4-进程何时收到信号?它是否必须通过内核才能执行信号处理程序?Linux 信号如何工作,linux,unix,signals,Linux,Unix,Signals,我研究信号已经有一段时间了,但我想了解它们到底是如何工作的,我需要一些关于这个问题的深入答案 例如,如果一个进程使用libc函数向另一个进程发送信号 1-该进程是否可以正常发送信号而不进入内核空间,或者当它想要发送信号时是否必须进入内核空间 2-如果必须首先进入内核,那么需要采取哪些步骤 3-这些信号处理器在哪里?它们是否存在于用户空间或内核空间中?默认信号处理程序如何 4-进程何时收到信号?它是否必须通过内核才能执行信号处理程序? 1发送信号最终由系统调用完成。所有系统调用都由内核执行 2不确
- 1发送信号最终由系统调用完成。所有系统调用都由内核执行
- 2不确定你想走多深。第一步是让内核确保允许您发送信号,最后一步是让内核自行处理或将信号发送到目标进程
- 3除内核考虑的SIGSTOP和SIGKILL之外,大多数信号处理程序都在用户空间中
- 4不,没有这样的要求。该过程忽略或处理该信号。处理程序是默认的或自定义的
signal
和sigaction
都在更新作为流程上下文一部分的表。发送到进程的信号也存储在此进程上下文中。当调度程序将CPU返回给进程时,它会检查是否需要发送信号。在这种情况下,目标进程可能会执行自定义处理程序。