【发布时间】:2011-05-01 07:40:56
【问题描述】:
我想使用子进程来运行一个程序,我需要限制执行时间。例如,如果它运行超过 2 秒,我想杀死它。
对于普通程序,kill() 效果很好。但是如果我尝试运行/usr/bin/time something,kill() 并不能真正杀死程序。
我下面的代码似乎不能正常工作。程序仍在运行。
import subprocess
import time
exec_proc = subprocess.Popen("/usr/bin/time -f \"%e\\n%M\" ./son > /dev/null", stdout = subprocess.PIPE, stderr = subprocess.STDOUT, shell = True)
max_time = 1
cur_time = 0.0
return_code = 0
while cur_time <= max_time:
if exec_proc.poll() != None:
return_code = exec_proc.poll()
break
time.sleep(0.1)
cur_time += 0.1
if cur_time > max_time:
exec_proc.kill()
【问题讨论】:
标签: python subprocess kill