私の落とし穴がうまくいかないのはなぜですか?

私の落とし穴がうまくいかないのはなぜですか?

echoSIGSTOPまたは、信号が受信されたときに応答するスクリプトが提供されますSIGHUP

$cat test.sh 
function clean_up {
    echo "cleaning up!"
}

echo 'starting!'

trap clean_up SIGSTOP SIGHUP

sleep 100

私はそれをバックグラウンドで実行します:

$./test.sh > output &
[4] 42624

その後、-1つまりを使って殺しました。ため息をつく

$kill -1 42624

しかし、trap期待どおりに動作しません。つまり、outputファイルに内容がありませんcleaning up!

$cat output 
starting!

どうしたの?

ベストアンサー1

これマニュアルページbash状態

Bashがコマンドが完了するのを待ってトラップが確立されたことを知らせると、コマンドが完了するまでトラップは実行されません。

あなたの例では、trap完了するまで実行されません。sleep 100

おすすめ記事