подпроцесс Python передает () блок

Я использую модуль подпроцесса для вызова внешней программы (plink.exe) для вхождения в сервер; но когда я звоню, связываются для чтения вывода, он блокируется. Код ниже:

 import subprocess
 process = subprocess.Popen('plink.exe hello@10.120.139.170 -pw 123456'.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
 print process.communicate() #block here

Я знаю, что блок то, потому что plink.exe это все еще выполнение; но я должен считать вывод, прежде чем подпроцесс завершится. Там должен так или иначе сделать это?

15
задан Mohsen Nosratinia 8 May 2015 в 14:13
поделиться

1 ответ

Вся цель метода сообщает метода - ждать, пока процесс завершится и вернуть все выходные данные. Если вы не хотите ждать, не звоните общаться . Вместо этого прочитайте из stdout или stderr атрибут для чтения вывода.

Если процесс выходов процесса как STDOUT и STDERR (и вы хотите прочитать его отдельно), вам придется быть осторожен, чтобы фактически читать как без блокировки, либо вы, либо может тупик. Это довольно сложно в окнах, и вместо этого вы можете использовать модуль PEXPECT .

28
ответ дан 1 December 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: