TRAP 收到信号后不立即执行的问题
来源:互联网 发布:淘宝店铺的模板好卖吗 编辑:程序博客网 时间:2024/06/03 10:58
今天写脚本的时候遇到一个trap不会立即触发的问题。
============bbb.sh======
#!/bin/bash
# traptest.sh
trap "echoBooh!;exit 0" TERM
trap "echo Booh!;exit 0"INT
echo "pid is$$"
sleep 600
===============
运行脚本,执行echo后进入睡眠。此时用ps -xj看bbb.sh和sleep 600在同一个进程组TPGID。
重新登入一个登录shell,向该bbb.sh发送INT新号:kill -INT PID或者发送kill -TERM PID,
这时bbb.sh会捕捉到这个新号,但是不会立即执行trap表中的程序(echo Booh!;exit 0),而是等到sleep 600这个子进程结束之后才会执行echo Booh!;exit 0。
经初步验证,除了不能被捕捉的两个新号-9和-19信号外,每当Bash收到一个预先设置等待命令完成的陷阱的信号,在所有的子进程或者子shell退出之前,trap设置的命令不会被执行到。
还有另外,当执行bbb.sh在终端运行时,按CTRL+Ctrap会立即触发,bbb.sh结束。
最终的原因是:CTRL+C会向当前前台进程组所有进程(子进程和父进程)都发送一个INT新号。Sleep 600在收到INT新号之后退出,这是bbb.sh捕捉到的INT信号就会触发了。
- TRAP 收到信号后不立即执行的问题
- Android startActivityForResult onActivityResult 立即执行 和不执行的问题
- 【Android实战】----调用startActivityForResult()后,onActivityResult()立即执行的问题
- qt设置登录按钮点击后不可用变灰的立即执行
- 信号trap的应用(转)
- <javascript>元素更新后不立即显示在页面上的问题
- hibernate flush 机制与调用 saveOrupdate 后不立即打印 sql 的问题
- domino服务器繁忙时压缩操作不立即执行问题
- DOM构造完成后,立即执行JS的函数
- spring启动后立即执行指定的函数
- 定义js函数后立即执行的写法
- Spring启动后,立即执行需要的操作
- AppUi()->ActivateLocalViewL(),不立即执行view的 DoActivateL();
- Alignment trap的问题
- jquery mobile页面跳转后js不执行的问题
- IIS7部署后Global.asax不执行问题的解决
- 函数的立即执行
- 信号解除阻塞后进程是否立刻收到信号
- 动态代理
- 枚举并隐藏窗口函数[汇编语言]
- 如何花两年的时间去面试一个人
- 动态规划——LCS问题
- 网上笔仗个人见解
- TRAP 收到信号后不立即执行的问题
- 新手如何成功搭建Android开发环境
- Fiddler相关
- win7玩CF出现error initrenderer().shutting down最简单最轻松的解决办法
- 回家
- SMS短信PDU编码
- Android学习笔记之广播(2)
- iis安装出现“当前标识没有对“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files”的写访问权限”
- Imcomplete class type delete(不完整类类型的删除)