【问题标题】:Are signals generated by OS kernels or processes?信号是由操作系统内核还是进程生成的?
【发布时间】:2015-12-15 01:15:33
【问题描述】:

https://en.wikipedia.org/wiki/Unix_signal

信号是进程间通信的一种有限形式,用于 Unix、类 Unix 和其他 POSIX 兼容的操作系统。一个信号 是发送到进程或特定的异步通知 线程在同一进程中,以便通知它发生的事件 发生了。

...

内核可以生成信号来通知进程事件。为了 例如,SIGPIPE 将在进程写入管道时生成 已被读者关闭;默认情况下,这会导致 进程终止,方便构建shell时 管道。

信号是由操作系统内核还是进程生成的?

如果信号是由操作系统内核生成的,那么信号如何用于进程间通信?它是通过让操作系统内核在两个进程之间进行通信来完成的,即一个进程通过某种方式(也是信号?)与操作系统内核通信,然后操作系统内核通过信号与另一个进程通信?

【问题讨论】:

    标签: operating-system signals ipc


    【解决方案1】:

    信号可以来自内核或其他进程。在您的示例中,内核自己生成信号以便与进程进行通信。

    其他进程也可以使用kill(2) 发送信号,它要求内核将信号传递给进程或进程组(进程甚至可以向自己发送信号)。如果发起者有权限发送信号,内核就会传递它。

    当一个人运行类似的东西时会发生这种情况:

    $ kill -TERM <some_pid>
    

    值得注意的是,无论来源如何,内核都是唯一能够传递信号的实体。

    【讨论】:

      猜你喜欢
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-03-22
      • 2014-05-22
      • 2011-11-17
      • 2014-04-10
      • 2016-10-31
      • 1970-01-01
      相关资源
      最近更新 更多