Ctrl + Cが「外に出る」のを防ぐ方法は?

Ctrl + Cが「外に出る」のを防ぐ方法は?

Ctrlタスクが完了したら、自動的に終了するか+終了をクリックして終了できるインタラクティブツールを実行したいと思いますC。この例では、ツールはechoと a で構成されますsleep(したがって、もはや真の対話型ではありません)。

監視が必要なので、これをします。

echo "$(date) Starting!" | tee -a myLog.log; \
echo "I NEED SOME TIME"; \
sleep 10; \
echo "$(date) Ended!" | tee -a myLog.log

ただし、これは+を押していない場合にのみCtrl機能しますC。 +を押すと、最後のエコーは実行されません。

どういうわけか、プロセス全体の「外部」伝播をCtrl防ぐことはできますか?C

shFreeBSDで動作します。

ベストアンサー1

私が正しく理解した場合:

#!/bin/sh
trap catchSigint INT
catchSigint(){
    echo
    echo "$(date) Interrupted" | tee -a myLog.log
    exit 1
}
echo "$(date) Starting!" | tee -a myLog.log
echo "I NEED SOME TIME"
sleep 10
echo "$(date) Ended" | tee -a myLog.log

SIGINTをキャプチャしています(Ctrl+によってトリガされますC)。検出されると、catchSigint は実行を終了し、「中断」を記録します。それ以外の場合は、「終了しました」が記録されます。

おすすめ記事