我有以下代码退出无限过程蟒子
c = open("text.txt", 'a')
output = subprocess.Popen('ping -t 127.0.0.1', stdout=subprocess.PIPE).communicate()[0]
c.write(str(output))
但随着平是无限的,在两个行代码stucks直到我关闭CMD
如何关闭无限子
我使用Python 2
我有以下代码退出无限过程蟒子
c = open("text.txt", 'a')
output = subprocess.Popen('ping -t 127.0.0.1', stdout=subprocess.PIPE).communicate()[0]
c.write(str(output))
但随着平是无限的,在两个行代码stucks直到我关闭CMD
如何关闭无限子
我使用Python 2
你可以使用-n参数(在Linux),中国平安设置查验信号的数量有限:
process = subprocess.Popen('ping -n 1 127.0.0.1', shell=True, stdout=subprocess.PIPE)
output = process.communicate()[0]
with open("text.txt", 'a') as f:
f.write(str(output))
或只读单一的第一行:
process = subprocess.Popen('ping 127.0.0.1', shell=True, stdout=subprocess.PIPE, universal_newlines=True)
output = process.stdout.readline()
process.stdout.close()
process.kill()
with open("text.txt", 'a') as f:
f.write(str(output))
process = subprocess.Popen('ping -t 127.0.0.1',stdout = subprocess.PIPE) output = process.communicate()[0] process.kill()still代码卡住 –
我更新了我的答案。 – SayPy
不起作用! process = subprocess.Popen('ping 127.0.0.1',shell = True,stdout = subprocess.PIPE,universal_newlines = True) output = process.stdout.readline() process.stdout.close() process.kill ()打印(输出)什么都不打印 –
或者您可以使用check_output
,并添加timeout
:
from subprocess import check_output
output = check_output('ping -t 127.0.0.1', timeout=seconds)
process = subprocess.Popen('ping -t 127.0.0.1', stdout=subprocess.PIPE)
time.sleep(10)
process.kill()
output=process.stdout.read()
与此代码,子过程的运行和数据将给予标准输出,
我们并不需要使用通信
当过要停止的过程中,
使用process.kill()
,并开始使用数据stdout.read()
我正在使用python 2 –
我发现解决方案谢谢@Saypy –
process = subprocess.Popen('ping -t 127.0.0.1',stdout = subprocess.PIPE) time.sleep(10) process.kill() output = process.stdout.read() –