下面代码实现了一个软件狗,被监控的程序做为狗的子程序存在,程序名称用参数传入,程序退出后会自动启动。
#!/usr/bin/python
import subprocess
import sys
import time
def restartproc():
p = subprocess.Popen([sys.argv[1]], shell=False, stdout=False)
while 1:
time.sleep(1)
ret = subprocess.Popen.poll(p)
if ret is None:
print "Process_id = ", p.pid;
else:
print "Process termined!";
p = subprocess.Popen([sys.argv[1]], shell=False, stdout=False)
if __name__ == "__main__":
restartproc();
Python 2.7环境下运行。