親プロセスが終了したときに親プロセスが実行されているプロセスを終了する方法は?

親プロセスが終了したときに親プロセスが実行されているプロセスを終了する方法は?

Pythonスクリプトを介して複数のDockerコンテナを実行しています。 Pythonスクリプトを正常に閉じると(cltr + c)、すべてのDocker出口を処理しましたが、強制終了してもDockerは実行中です。

問題は、Pythonスクリプトが異常終了した場合にDockerコンテナを終了する方法はありますか? (PythonスクリプトをDockerプロセスの親プロセスに設定するのでしょうか?そのようなものはありますか?)

ベストアンサー1

同じ問題に直面している人なら誰でも役に立ちます。

libc = ctypes.CDLL("libc.so.6")
def set_pdeathsig(sig=signal.SIGTERM):
    def callback():
        return libc.prctl(1, sig)
    return callback

open_container_cmd = "docker-compose run --rm test" # cannot use detach <-d>
proc = subprocess.Popen(
                open_container_cmd,
                shell=True,
                stdout=subprocess.PIPE,
                stderr=subprocess.PIPE,
                stdin=subprocess.PIPE,
                preexec_fn=set_pdeathsig(signal.SIGTERM))

おすすめ記事