我想通過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連接。 –