Signals

多個程序報告收到的信號

  • August 2, 2014

如果我在一個終端上執行多個程序program &,然後從另一個終端開始發送SIGKILL SIGINT或任何其他信號,執行所有程序的終端會告訴我哪個程序收到了什麼信號?

終端不知道發送到此類程序的信號,因此不會告訴您任何資訊。但是如果你的shell 有作業控制,它可以告訴你後台作業何時終止(例如由於信號)。例如,對於 bash 和 zsh,您需要設置notify選項以便立即獲得這樣的報告(而不是等待下一個提示)。

您還可以設置 SIGCHLD 陷阱,該陷阱在後台作業終止時執行(但您將無法通過陷阱獲得有關已終止作業的任何資訊)。

在 POSIX shell 中,您還可以wait $pid用於獲取某些 PID 的退出狀態$pid(這會給您信號,可能有誤報和誤報,具體取決於程序所做的事情),但有一些限制。有關詳細資訊,請參閱wait規範

引用自:https://unix.stackexchange.com/questions/148053