본문 바로가기

Python

[python] 좀비 프로세스 생성하기 (os.popen)

반응형

 

파이썬의 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 하기 때문에 좀비 프로세스가 생성되지 않는다. 

반응형