如何保护C文件在ubuntu中进入无限循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何保护C文件在ubuntu中进入无限循环相关的知识,希望对你有一定的参考价值。
我目前正在编写一个python3脚本,通过运行带有各种输入文件的C代码来检出C源文件。汇编由海湾合作委员会完成,如果重要的话。在某些情况下,C代码进入无限循环(我想出来因为我的内存不足)。有没有一种方法可以像看门狗一样“保护”我的代码,或者告诉我X分钟后我遇到无限循环的东西?
我不能假设任何输入,所以我没有像改变它或其他东西的答案...
#runfile is an exe file, code file is .c file, inputlist/outputlist are directories
import subprocess as sbp
import os
sbp.call('gcc -o {0} {1}'.format(runfile,codefile), shell = True)
for i in range(numoFiles):
#run the file with input i and save it to output i in outdir
os.system("./{0} <{1} >{2}".format(ID,inputList[i],outputList[i]))
答案
查看"Halting Problem"。无法确定任意程序最终是否会完成,或者它是否会永远停留在循环中。
另一答案
我想出了一种避免通过这个method进入无限循环的方法:
import subprocess
for i in range(numofiles):
cmd="gcc -o {0} {1}".format(runfile,codefile)
subprocess.call(cmd, shell = True)
try:
cmd="./{0} <{1} >'/dev/null'".format(Cfile,inputfile) #check if runtime>100 sec
subprocess.run(cmd,shell=True,timeout=100)
except subprocess.TimeoutExpired:
print("infinite loop")
continue
cmd="./{0} <{1} >{2}".format(Cfile,inputfile,outputfile)
subprocess.run(cmd,shell=True) #print output to txt file
以上是关于如何保护C文件在ubuntu中进入无限循环的主要内容,如果未能解决你的问题,请参考以下文章
当 FragmentActivity 在 Android 中进入后台时出现 NotSerializableException
在windows的cmd中进入带空格的Program Files文件夹