bash – 如何在不关闭xterm的情况下捕获SIGINT?
这是我的剧本;
#!/bin/bash trap '' SIGINT xterm & wait 我运行它并弹出一个xterm.然后我将键盘对准原始终端窗口并点击^ C.我不希望发生任何事情,但孩子xterm消失了. (理想情况下,我想安装自己的陷阱处理程序,但这是一个小步骤) 在分支后使用disown xterm从父进程中分离xterm,然后^ C对xterm没有任何作用,但是等待不起作用. 我只是想阻止SIGINT进入xterm. 解决方法
当您将SIGINT发送到bash脚本时,信号将传播到脚本中的当前进程,然后它会在陷阱中执行命令.所以“等待”被打断了.你必须再次“等待”运行.
此外,您必须执行所有作业在其自己的进程组(set -m)中启动.从设置手册页:
#!/bin/bash set -m trap 'R=true' SIGINT xterm & while : ; do R=false wait [[ $R == true ]] || break done 您可以在shebang中看到它使用’-x’选项运行的命令. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |