PythonでSIGINTをキャプチャするにはどうすればいいですか? 質問する

PythonでSIGINTをキャプチャするにはどうすればいいですか? 質問する

私は、いくつかのプロセスとデータベース接続を開始する Python スクリプトに取り組んでいます。時々、Ctrl+Cシグナルでスクリプトを終了し、クリーンアップを行いたいと思っています。

Perl では次のようにします:

$SIG{'INT'} = 'exit_gracefully';

sub exit_gracefully {
    print "Caught ^C \n";
    exit (0);
}

Python でこれと同様のことをするにはどうすればよいでしょうか?

ベストアンサー1

ハンドラーを登録するsignal.signalこのような:

#!/usr/bin/env python
import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

コードは以下から改変ここ

詳しいドキュメントについてはsignalここ。  

おすすめ記事