0
トラップスリープループを実行しようとすると、奇妙な問題が発生しています。bashのシグナルトラッピングはRHEL7では一度しか動作しません(Ubuntuではありません)
具体的には、以下のコード:
saysomething() {
trap saysomething 37
echo "Hello there"
while true; do
sleep 1
done
}
echo "Current pid: $$"
saysomething
プリント「こんにちは」私はそれを送信毎回のUbuntu 14.04にkill -37 <pid>
を使用して別のシェルからの信号。
ただし、RHEL 7マシンでは、上記のように初めてHello there
が印刷されます。その後、スクリプトは実行を続けますが、それ以上の信号には応答しません。
この違いの原因は何ですか?
申し訳ありません。あまりにも速く読む。おそらくあなたは関数の外側からそれを行うことができます。 –
両方のマシンで同じバージョンの 'bash'を使用していますか? – chepner
いいえ、 'bash'のバージョンが異なっているようです。 Ubuntuでは4.3.11、RHEL 7では4.2.46となっています。 – balajeerc