Python
[python] 좀비 프로세스 생성하기 (os.popen)
lim
2022. 1. 10. 17:08
반응형
파이썬의 os 모듈의 popen 함수를 통해 자식 프로세스를 만들고 해당 프로세스를 핸들링 하지 않고, Sleep을 걸어두면 해당 시간 동안 좀비 프로세스를 만들 수 있다.
import os
import time
cmd = os.popen('ps -ef --no-headers').read()
time.sleep(1000)
$ ps -ef | grep 7733
user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py
user+ 7734 7733 0 14:02 pts/27 00:00:00 [sh] <defunct>
os.popen을 하다보면 위와 같이 좀비프로세스를 생성하는 시나리오를 자주 만날 수 있는데, 이 경우 아래와 같이 해당 프로세스를 명시적으로 close해주는 방식으로 없앴을 수 있다.
import os
import time
process = os.popen('ps -ef --no-headers')
data = process.read()
process.close()
time.sleep(1000)
$ ps -ef | grep 7733
user+ 7733 6238 0 14:02 pts/27 00:00:00 python test.py
위와 같이 해주면 자식 프로세스를 명시적으로 kill 하기 때문에 좀비 프로세스가 생성되지 않는다.
반응형