【发布时间】:2019-12-27 06:20:41
【问题描述】:
我正在构建一个在线法官,它接受用户的 c++ 代码,并告诉他们它的输出是否正确。目前,我正在查看一个开源 python 项目,看看如何做到这一点。在示例代码中,它们同时运行 subprocess.check_output() 和 subprocess.call(),尽管它们几乎做同样的事情。由于我通常是子进程和命令行参数的初学者,我想知道这是否有原因。谢谢!
if language == "C++":
filename = "submissions/" + str(runID) + ".cpp"
try :
subprocess.check_output('g++ ' + filename, stderr = subprocess.STDOUT , shell=True);
except subprocess.CalledProcessError, e:
return (-1 , e.output)
retval = subprocess.call('g++ ' + filename , shell = True)
subprocess.call('timeout 1s ./a.out < ' + inpfile + ' > ' + outfile , shell = True)
【问题讨论】:
-
我的第一个想法是
retval之后会被使用,但只有当retval为零时,代码才会到达那个点。那么,它可能只是糟糕的代码?
标签: python subprocess