たとえば、以下のスクリプトを実行すると整数信号とCtrl+C、スクリプトファイルはすぐに中断されます。ただし、Killコマンドを使用して同じプロセスを実行しようとすると、割り込み信号が有効になるようにコマンドが完了すると予想されますkill -2 pid
。sleep
この状況の原因は正確に何ですか?
#!/bin/bash
trap 'echo signal received!!' SIGINT
echo "The script pid is $$"
sleep 30
ベストアンサー1
違いは押されたCtrl-C
ときコアSIGINT
スクリプトとコマンドにシグナルを送信しますsleep
(つまり、スクリプト全体にシグナルを送信します)。プロセスグループ)、しかし(おそらくスクリプトから)kill -INT $pid
シグナルをエクスポートします。$pid
スクリプトが一般的な対話型シェルで始まったと仮定すると(つまり、スクリプトがプロセスグループリーダーである場合)、pidを無効にするだけですkill -INT -$pid
。