【发布时间】:2015-03-16 10:43:57
【问题描述】:
我的python代码是这样的:
def a():
...
...
subprocess.call()
...
...
def b():
...
...
等等。
我的任务:
1)如果subprocess.call()在3秒内返回,我的执行应该在subprocess.call()返回的那一刻继续。
2)如果subprocess.call()在3秒内没有返回,subprocess.call()应该被终止,我的执行应该在3秒后继续。
3) 在subprocess.call() 返回或3 秒结束之前,不应进行进一步的执行。
这可以通过线程来完成,但是如何实现呢?
实际代码的相关部分是这样的:
...
cmd = ["gcc", "-O2", srcname, "-o", execname];
p = subprocess.Popen(cmd,stderr=errfile)//compiling C program
...
...
inputfile=open(input,'w')
inputfile.write(scanf_elements)
inputfile.close()
inputfile=open(input,'r')
tempfile=open(temp,'w')
subprocess.call(["./"+execname,str(commandline_argument)],stdin=inputfile,stdout=tempfile); //executing C program
tempfile.close()
inputfile.close()
...
...
我正在尝试使用 python 编译和执行 C 程序。 当我使用 subprocess.call() 执行 C 程序并假设 C 程序包含无限循环时,subprocess.call() 应该在 3 秒后终止,程序应该继续。我应该能够知道 subprocess.call() 是否被强制终止或成功执行,以便我可以相应地在以下代码中打印消息。
后端gcc是linux的。
【问题讨论】:
标签: c linux python-2.7 subprocess