この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 がどのように機能しているかを調べる必要があります...