Signals
多個程序報告收到的信號
如果我在一個終端上執行多個程序
program &
,然後從另一個終端開始發送SIGKILL
SIGINT
或任何其他信號,執行所有程序的終端會告訴我哪個程序收到了什麼信號?
終端不知道發送到此類程序的信號,因此不會告訴您任何資訊。但是如果你的shell 有作業控制,它可以告訴你後台作業何時終止(例如由於信號)。例如,對於 bash 和 zsh,您需要設置
notify
選項以便立即獲得這樣的報告(而不是等待下一個提示)。您還可以設置 SIGCHLD 陷阱,該陷阱在後台作業終止時執行(但您將無法通過陷阱獲得有關已終止作業的任何資訊)。
在 POSIX shell 中,您還可以
wait $pid
用於獲取某些 PID 的退出狀態$pid
(這會給您信號,可能有誤報和誤報,具體取決於程序所做的事情),但有一些限制。有關詳細資訊,請參閱wait
規範。