スクリプトを終了しますが、現在実行中のプログラムが終了することを許可します。

スクリプトを終了しますが、現在実行中のプログラムが終了することを許可します。

無限のwhileループでコマンドを実行するbashスクリプトがあります。スクリプトは次のとおりです。

while :
do
     python3 my_program.py
done

Pythonプロセスを中断せずに端末でこのwhileループを終了する簡単な方法はありますか?つまり、Pythonプロセスが完了し、ループが終了します。

つまり、次のようになります。終了条件が端末入力であるwhileループはありますか?

ベストアンサー1

SIGINTスクリプトをキャプチャし、ループ終了条件を設定できます。プログラムを実行するsetsidSIGINT+CTRLC

#! /bin/bash

STOPFILE=/tmp/stop_my_program

rm -f $STOPFILE

trap "touch $STOPFILE" INT

while [ ! -f $STOPFILE ]
do
     setsid python3 my_program.py
done

rm -f $STOPFILE

おすすめ記事