4

この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 ソースに飛び込んで、trap がどのように機能しているかを調べる必要があります...

4

2 に答える 2

4

SO question not trapping interrupts during subshel​​l/exec statementrsyncでアドバイスされているように、 withを使用してみましたか?--no-detachbashrsync

于 2012-11-26T22:15:39.110 に答える