Pythonからプログラムを実行し、スクリプトが終了しても実行を継続する 質問する

Pythonからプログラムを実行し、スクリプトが終了しても実行を継続する 質問する

私は次のようなことを実行してみました:

subprocess.Popen(['nohup', 'my_command'],
                 stdout=open('/dev/null', 'w'),
                 stderr=open('logfile.log', 'a'))

これは、親スクリプトが正常に終了する場合は機能しますが、スクリプトを強制終了すると (Ctrl-C)、すべての子プロセスも強制終了されます。これを回避する方法はありますか?

私が注目しているプラ​​ットフォームはOS XとLinuxで、Python 2.6を使用しています。そしてPython 2.7。

ベストアンサー1

子プロセスは親プロセスと同じプロセス グループに属しているため、同じものを受け取ります。子プロセスをSIGINT呼び出すことで、子を独自のプロセス グループに置くことができます。の引数はここで役立ちます。os.setpgrp()Popenpreexec_fn

subprocess.Popen(['nohup', 'my_command'],
                 stdout=open('/dev/null', 'w'),
                 stderr=open('logfile.log', 'a'),
                 preexec_fn=os.setpgrp
                 )

(preexec_fnは un*x-oid 専用です。Windows にはほぼ同等の " creationflags=CREATE_NEW_PROCESS_GROUP" があるようですが、試したことはありません。)

おすすめ記事