调用exe有几种方式,这里介绍一下subprocess。
p = subprocess.Popen(“./XXX.exe param1 param2”, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
返回值为p.returncode,exe中打印出来的消息为output= p.communicate()[0]
那么有的程序运行时特别耗资源,容易卡死,所以设置一个超时时间,如果在规定时间内可以分析完毕,返回分析结果,如果超时了,杀死exe,返回默认结果。
def Func(): p = subprocess.Popen("./XXX.exe", stdin=subprocess.PIPE, stdout=subprocess.PIPE) try: p.wait(timeout=SECONDS_TIMEOUT) except Exception as e: print("===== process timeout ======") p.kill() return None
output= p.communicate()[0]
err = p.communicate()[1]
print(output)
print(p.returncode)