2015-07-20 23 views
1

是否有可能在Bash中异步处理信号?Bash:异步处理信号(无后台任务)

我知道trap命令。它的工作方式是在处理信号之前等待当前命令完成。处理信号到达时的唯一方法是在后台运行当前命令。我们假设我们不能在后台运行我们的命令(例如,因为我们希望能够通过stdin输入键盘),有没有办法在将信号传递到脚本时处理信号?

回答

1

如果脚本不在前台,则不可能同步处理信号。该bash manpage在这方面是很清楚的:

如果bash等待命令完成,并收到该陷阱已经设置的信号,陷阱将不被直到命令完成执行。

根据您的实际情况,可以通过将信号传递到后台子进程或将脚本保留在前台并将命令路由到命令来解决此问题。两者都很有人气。