我正在尝试从我在同一脚本中运行的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