메인 프로세스와 함께 시작하고 끝나는 프로세스를 구현하기 위해서 아래와 같이 python에 내장된 subprocess module을 사용할 수 있다. 그런데 아래 코드는 맥/유니스 운영체제에서만 가능한 것 같다(맥에서만 확인). 윈도우에서는 아래 코드가 정상적으로 작동하지 않았다.
import subprocess
import time
cmd_arr = ["python", "subprocess_1.py"]
rec = subprocess.Popen(cmd_arr)
time.sleep(5)
rec.terminate() #sends signal SIGTERM to subprocess
rec.wait()
print("Whole process is terminated successfully.")
#!/usr/bin/env /user/intelpython/latest/envs/py3env/bin/python
import time, sys, signal
#flag
activated = True
def terminate(signum, frame):
global activated
print(signum)
print(frame)
activated = False
signal.signal(signal.SIGTERM, terminate)
count = 1
while activated:
count += 1
time.sleep(0.5)
print(f"sub---{count+1}")
print("Subprocess is terminated successfully.")