Python: Como espiar um objeto pty para evitar o bloqueio?
Estou usandopty
para ler sem bloquear o stdout de um processo como este:
import os
import pty
import subprocess
master, slave = pty.openpty()
p = subprocess.Popen(cmd, stdout = slave)
stdout = os.fdopen(master)
while True:
if p.poll() != None:
break
print stdout.readline()
stdout.close()
Tudo funciona bem, exceto que owhile-loop
bloqueia ocasionalmente. Isso se deve ao fato de a linhaprint stdout.readline()
está esperando que algo seja lido emstdout
. Mas se o programa já tiver terminado, meu pequeno script ficará suspenso para sempr
Minha pergunta é: Existe uma maneira de espiar ostdout
objeto e verifique se há dados disponíveis para serem lidos? Se não for esse o caso, deve continuar com owhile-loop
onde descobrirá que o processo realmente já terminou e interromperá o cicl