2015-07-20 53 views
1

是否有可能在Bash中異步處理信號?Bash:異步處理信號(無後臺任務)

我知道trap命令。它的工作方式是在處理信號之前等待當前命令完成。處理信號到達時的唯一方法是在後臺運行當前命令。我們假設我們不能在後臺運行我們的命令(例如,因爲我們希望能夠通過stdin輸入鍵盤),有沒有辦法在將信號傳遞到腳本時處理信號?

回答

1

如果腳本不在前臺,則不可能同步處理信號。該bash manpage在這方面是很清楚的:

如果bash等待命令完成,並收到該陷阱已經設置的信號,陷阱將不被直到命令完成執行。

根據您的實際情況,可以通過將信號傳遞到後臺子進程或將腳本保留在前臺並將命令路由到命令來解決此問題。兩者都很有人氣。