2012-11-26 43 views
3

请考虑此的bash脚本:bash的陷阱不会忽视信号

#!/bin/bash 

trap '' INT 

echo sleep: 
sleep 5 

echo rsync: 
rsync -a /usr/lib /var/tmp 

试图中断与CTRL-C睡眠失败,符合市场预期。但rsync是可中断的(睡眠顺序& rsync并不重要)?任何想法都欢迎!

编辑: 找到了一个区别:rsync本身启动2个子程序(客户端/服务器,它产生2个错误信息,我假设),而且这些似乎不会继承它的父母的'无知'。必须深入bash的来源,并找出如何陷阱正在工作...

+1

'rsync'正在设置自己的信号处理程序,覆盖你的? – tripleee

+0

这里是一个非常类似的问题的链接。看那里可能会有帮助。 http://stackoverflow.com/questions/9624947/bash-not-trapping-interrupts-during-rsync-subshel​​l-exec-statements – davak

+0

感谢您的链接,但我已经读过那个。但解决这个问题并没有帮助我 - 或者我没有以正确的方式让他们停下来:/ @tripleee:那么陷阱是没用的?为什么ctrl-c会通过shell? – user1854128

回答