2015-12-15 56 views
1

https://en.wikipedia.org/wiki/Unix_signalOS內核或進程生成的信號是什麼?

信號是 的Unix,類Unix和其他符合POSIX的操作系統使用的進程間通信的有限形式。信號 是發送給進程或同一進程內的特定線程的異步通知,以便通知其發生的事件 。

...

內核可以產生信號通知進程的事件的。例如,對於 示例,當進程寫入已由讀者關閉的管道 時,將生成SIGPIPE;在默認情況下,這會導致 進程終止,這在構建shell 管道時很方便。

操作系統內核或進程生成的信號是?

如果信號是由OS內核生成的,那麼在進程間通信中如何使用信號?它是通過將OS內核放在兩個進程之間的中間通信來完成的,即進程通過某種方式(也是信號?)與OS內核進行通信,然後OS內核通過信號與另一個進程通信?

回答

1

信號可以由內核或其他進程產生。在你的例子中,內核自己生成信號以便與進程進行通信。

其他進程也可以使用kill(2)發送信號,它要求內核向進程或進程組發送信號(進程甚至可以向自己發送信號)。如果發起者有權發送信號,則內核將其發送。

這是當一個運行像會發生什麼:

$ kill -TERM <some_pid> 

值得注意的是,內核能夠提供信號的唯一實體,不論其來源。

相關問題