so true

心怀未来,开创未来!
随笔 - 160, 文章 - 0, 评论 - 40, 引用 - 0
数据加载中……

关于trap的实验

-------------------------------------
trap 'date' SIGUSR2
echo before
while true; do
    sleep 0.01
done
echo after
kill -SIGUSR2 XXX #date立即被执行
kill -SIGUSR2 XXX #date立即被执行
--------------------------------------
trap 'date' SIGUSR2
echo before
sleep 10
echo after
kill -SIGUSR2 XXX #date未被执行,直到sleep 10结束后立即被执行,最后再打印出after
--------------------------------------
trap 'date' SIGUSR2
echo before
sleep 100 &
wait
echo after
kill -SIGUSR2 XXX #wait被立即中断(wait的返回码是一个大于128的值),date立即被执行,然后打印出after退出
--------------------------------------
shell在执行过程中,在一个命令执行过程中不会执行trap指定的命令,只有在命令执行完之后才会执行trap指定的命令;
Ctrl+c #给程序发送SIGINT信号
Ctrl+\ #给程序发送SIGTERM信号
bash shell会忽略SIGQUIT信号,即:1个shell进程run时发SIGQUIT不会退出;但你自己编译的程序run时收到SIGQUIT是会退出的
用EXIT来做清理:trap "{ rm -f $tmp_file ; exit 255; }" EXIT
用ERR来做警告,可以参见:http://blog.csdn.net/sosodream/article/details/5681893和http://blog.csdn.net/sosodream/article/details/5724650
用DEBUG来做调试,例如来跟踪变量的变化:
trap "echo tmp_value is being changed." DEBUG
bla bla bla
declare -t tmp_value=38

posted on 2013-08-14 16:08 so true 阅读(382) 评论(0)  编辑  收藏 所属分类: Linux


只有注册用户登录后才能发表评论。


网站导航: