我目前正在使用mdt(mendel 开发工具 - 一种通过 ssh 用于谷歌珊瑚板的通信工具)和 subprocess.Popen 自动化一些事情,但是在第二次调用 mdt 时我总是得到
无法建立与设备的 ssh 连接:套接字错误:[Errno 25] 设备的 ioctl 不合适。
我怀疑一个套接字保持打开状态,下一次调用不能重用该套接字。但是我不确定在调用 subprocess.Popen 时如何关闭它。
这是我用来调用 mdt 的代码:
def execute(command: str) -> Tuple[AnyStr, AnyStr]:
segmented_command = shlex.split(command)
process = Popen(segmented_command, stdout=PIPE, stderr=PIPE,
universal_newlines=True)
logging.info("\n".join(output.strip() for output in process.stdout.readlines()))
stdout, stderr = process.communicate()
return stdout, stderr
像这样称呼它:
execute("mdt push install_linux_headers_on_board.py .")
execute("mdt exec chmod +x /home/mendel/install_linux_headers_on_board.py")
有没有办法关闭套接字?