信号如何工作

时间:2014-08-25 16:49:58

标签: linux unix signals

我现在一直在研究信号,但我想了解它们是如何工作的,我需要深入回答这个问题

如果进程使用libc函数向另一个进程发送信号,例如。

1 - 这个过程能否正常发送信号而不进入内核空间,或者当它想发送信号时是否必须进入内核空间?

2 - 如果必须先进入内核,那么采取了哪些步骤?

3 - 这些信号处理程序在哪里?它们是存在于用户空间还是内核空间中,以及默认的信号处理程序呢?

4 - 当一个过程收到信号时?它是否必须通过内核才能执行信号处理程序?

1 个答案:

答案 0 :(得分:2)

  • 1最终通过系统调用发送信号。所有系统调用都由内核执行。

  • 2不确定自己有多深。第一步是让内核确保允许发送信号,最后一步是让内核自行处理或将信号传递给目标进程。

  • 3大多数信号处理程序都在用户空间中,除了内核考虑的SIGSTOP和SIGKILL之外。

  • 4不,没有这样的要求。该过程要么忽略或处理信号。处理程序是默认处理程序或自定义处理程序。