2012-11-26 86 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

回答