Python (Linux ではバージョン 2.7.3) で記述された小さなプログラムがあり、ループ内の多数のファイルに対して外部コマンドを実行します。を使用してこれをsubprocess.check_output
行い、出力から Sqlite3 データベースにデータを書き込みます。私には2つの問題があります:
プログラムを停止するためにヒット
Ctrl+C
すると、実行中のサブプロセスが強制終了され、メイン プログラムが次の反復を続行して次のサブプロセスを起動するだけです。別のウィンドウから強制
kill -9
終了すると終了しますが、データベースファイルには変更が含まれていません。
私は数時間読んでいて、シグナルハンドラーなどを含むさまざまなことを試していtry
ますfinally
。私はこれまで、非常に単純であるべきことを行うことができませんでした。
Ctrl+C
では、サブプロセスが終了し、sqlite3 データベースが正しく保存されるように、Python プログラムに a を受け入れてきれいに終了させるにはどうすればよいでしょうか?
(それを追加するだけで、プログラムが完了するまで実行されたままになっている場合、プログラムは正常に終了し、データベースファイルは期待どおりに更新されます)