プロセス自体ではなく、特定のプロセスに根ざしたプロセスツリーですべての(サブ)プロセスを終了する方法は?

プロセス自体ではなく、特定のプロセスに根ざしたプロセスツリーですべての(サブ)プロセスを終了する方法は?

私は()子プロセスをpython生成し、その結果、複数の子プロセス自体を生成するプロセスを持っています。ここでは、プロセスを終了せずにルートと見なされるプロセスツリー内のすべてのプロセスを終了したいと思います。gitgit clonegitpython

考えられる解決策(ただし、注意事項あり):

  • python子プロセスツリーを再帰的に移動します/proc/<pid>

この場合、このプロセス階層のプロセスが終了する前に子プロセスを作成しないようにするにはどうすればよいですか?この場合、子プロセスは孤児プロセス(競合条件)になります。

  • 他のすべての子孫をpython含むプロセスのプロセスグループを終了します。git

この場合、pythonプロセスも終了しますが、これは発生したくありません。

プロセス自体pythonではなく、プロセスに基づくプロセス階層内のすべてのプロセスを確実に終了する方法はありますか?python

ベストアンサー1

このpslistパッケージには、rkillすべての子孫を終了できるコマンドが含まれています。

人 plist:

pslist ユーティリティは現在のプロセスのリストを調べて、指定されたプロセスとすべての子プロセスを検索します。 [..]

rkillとして呼び出されると、このユーティリティはプロセスに関する情報を表示せずに代わりにシグナルを送信します。コマンドラインに指定しないと、終了(SIGTERM)信号が送信されます。

gitのpidだけを与えるだけです。

(Ubuntu / Archなどで使用可能)

おすすめ記事