コマンドpython script.py &
を使用して、バックグラウンドでpythonスクリプトを実行しています。スクリプトは次のようになります。背景のPythonスクリプトをきれいに終了する
import time
def loop():
while True:
time.sleep(1)
if __name__=='__main__':
try:
loop()
except KeyboardInterrupt:
print("Terminated properly")
それはスクリプトを終了することになると、私は、それが(例えば、「適切に終端」印刷など)が停止される前に、いくつかのクリーンアップを行いたいと思います。現在のプロセスとして実行すると、これはキーボード割り込み後にexcept
ステートメントで処理されます。
kill PID
コマンドを使用すると、クリーンアップは実行されません。バックグラウンドプロセスを停止し、終了する前にいくつかのコード行を実行するにはどうすればよいですか?
'kill -s 2 PID'を使用して、PID割り込みを処理するキーボード割り込みを送信できます。もし私の記憶に間違いがなければ、それは信号「2」でなければなりません。 – Sraw
'kill'は' KeyboardInterrupt'とは異なるシグナルを送ります。デフォルトでは、 'INT(2)'を送信します。詳しくはhttp://linuxcommand.org/lc3_man_pages/kill1.html – Vinny
@Vinny signal 9はSIGKILLです... – NieDzejkob