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

最佳答案

如果脚本不在前台,则无法同步处理信号。在这方面,bash manpage非常清楚:
如果bash正在等待命令完成并接收到已设置陷阱的信号,则在命令完成之前不会执行陷阱。
根据实际情况,可以通过将信号传递到后台子进程,或者将脚本保持在前台并将输入路由到命令来解决这个问题。两者都是精心设计的。

关于linux - Bash:异步处理信号(无后台任务),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31511790/

10-16 20:32