상위 프로세스가 종료될 때 상위 프로세스가 실행 중인 프로세스를 종료하는 방법은 무엇입니까?

상위 프로세스가 종료될 때 상위 프로세스가 실행 중인 프로세스를 종료하는 방법은 무엇입니까?

Python 스크립트를 통해 여러 도커 컨테이너를 실행하고 있습니다. Python 스크립트를 정상적으로 닫을 때(cltr+c) 모든 도커 종료를 처리했지만 강제 종료 시 도커는 계속 실행 중입니다.

문제는 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))

관련 정보