0

実行中の端末が閉じていたり、SSH接続が失われたりした場合でも、必要なクリーンアップを実行するのに十分な柔軟性を備えたコードを作成する必要があります。必要なすべてのコードを1つのクラスの__del__メソッドにラップしました。ただし、Pythonは終了時に(C ++とは異なり)それを呼び出していないようです。やってみ[atexit][1]ましたが、どちらも呼ばれませんでした。

任意の提案をいただければ幸いです。

4

1 に答える 1

2

signalモジュールを使用する必要があります。SIGHUPターミナルウィンドウを閉じるか、SSH接続が失われたときにプログラムに送信する必要があります。SIGINT代わりにキャッチすることもできますがSIGHUP、これはキャッチオールソリューションです。

import signal
import sys
def signal_handler(signal, frame):
    print 'Handling SIGHUP signal!'
    sys.exit(0)
signal.signal(signal.SIGHUHP, signal_handler)
print 'Waiting for SIGHUP'
signal.pause()

sudo kill -1 <pid of your python process>別のターミナルウィンドウで発行することにより、これをテストできます。

于 2012-09-26T23:06:03.270 に答える