我想通过Telnet与数据记录器进行通信。因此,我写了下面的python脚本:用Python关闭Plink窗口
import subprocess
command ='plink.exe -telnet -P 23 12.17.46.06'
p = subprocess.Popen(command, stdin=subprocess.PIPE, stdout=subprocess.PIPE, bufsize=1, shell=False)
answer = p.communicate('command')[0]
print answer
通过运行脚本,plink-windows弹出。 python脚本似乎等待在plink命令窗口内完成一些操作。通过手动关闭窗口,所需的“答案”出现在python中。
我正在寻找一个命令/过程来直接关闭python的plink。似乎不足以关闭子进程,因为在这种情况下,只有python和plink之间的通信被关闭,而不是程序plink.exe本身。
任何帮助表示赞赏! 问候,菲尔
感谢澄清communicat()命令。然而,问题仍然是如何直接从python退出plink。 python脚本在Windows 7 64位上运行。 –
你的问题是[XY问题](https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。连接关闭时,plink将退出。你怎么知道*什么时候杀死它?如果需要,可以通过调用['.kill()'](https://docs.python.org/3/library/subprocess.html#subprocess.Popen.kill)来杀死它。当然,当程序阻塞等待进程终止时,程序无法做任何事情。你要么学习多线程(这是很难做到没有错误),或提供通信超时()或使用非阻塞方法来管理管道。 – dsh
好吧,那么我必须重新制定我的问题:我怎样才能杀死由python **建立的plink **的telnet连接?你对超时的建议对我来说足够了。但是,正如我之前提到的,我可以终止从python到plink的连接,但不能连接plink本身的telnet连接。 –