读取所有输入后,Python Subprocess readline挂起()

时间:2016-12-04 21:33:00

标签: python python-3.x subprocess

我正在尝试从我在同一脚本中运行的tcp服务器读取。我能够发送一个命令并读取其输出,但最后(在读完所有输出后)看起来该程序在readline中挂起,我已经尝试了几乎所有解决方案herehere但仍然它挂了。

这些解决方案中的大多数建议检查readline的输出是否为空,但在我的情况下,程序永远不会从上次读取返回,只是在那里挂起。

修改 tcp服务器不在我的控制之下,或者说我只需要测试服务器脚本因此我无法修改它。此外,是否可以使用python发送命令到运行服务器而不使用子进程?还有更好的选择吗?

def subprocess_cmd(command):
   process=subprocess.Popen(command,stdin=subprocess.PIPE,stderr=subprocess.STDOUT,stdout=subprocess.PIPE, shell=True)

for cmd in ['python3 -u tcp_server.py 123 port1']:
    subprocess_cmd(cmd)

process.stdin.write('command like print_list')
process.stdin.flush()
while True:
  line=process.stdout.readline()
  if line == '':
        break

0 个答案:

没有答案