信号是进程间通信的一种有限形式,用于Unix、类Unix和其他符合POSIX的操作系统中.信号是向进程或同一进程中的特定线程发送的异步通知,以便将发生的事件通知进程。 ..。 内核可以生成信号通知进程事件。例如,当进程写入已被读取器关闭的管道时,将生成SIGPIPE;默认情况下,这会导致进程终止,这在构建shell管道时非常方便。
信号是由操作系统内核或进程生成的吗?
如果信号是由OS内核产生的,那么在进程间通信中如何使用信号呢?它是在通信的两个进程之间设置操作系统内核,即进程通过某种方式(也是信号?)与OS内核通信,然后OS内核通过信号与另一个进程通信吗?
发布于 2015-12-15 14:26:09
信号可以由内核或其他进程发出。在您的示例中,内核生成信号本身,以便与进程通信。
其他进程也可以使用kill(2)发送信号,后者要求内核向进程或进程组传递信号(进程甚至可以向自身发送信号)。如果发起者拥有发送信号的权限,那么内核就会传递它。
当一个人运行这样的程序时,会发生这样的情况:
$ kill -TERM <some_pid>值得注意的是,内核是唯一能够传递信号的实体,不管源是什么。
https://stackoverflow.com/questions/34279464
复制相似问题