【发布时间】:2016-12-04 21:33:00
【问题描述】:
我正在尝试从我在同一脚本中运行的 tcp 服务器读取行。我能够发送一个命令并读取它的输出,但最后(在读取所有输出之后)看起来该程序挂在 readline 中,我尝试了几乎所有的解决方案 here 和 here 但它仍然挂起。
这些解决方案中的大多数建议检查 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
【问题讨论】:
-
您必须发布您的代码,以便我们提供帮助。
-
@Jean-FrançoisFabre 代码已添加
标签: python python-3.x subprocess