Captura de saída de terminal em Python
Eu quero fazer algo semelhante à segunda resposta aqui (mas não muito semelhante):Simule a interrupção do teclado Ctrl-C no Python enquanto trabalha no Linux
É muito mais simples e acho que estou perdendo alguma coisa. Digamos, de um script python, eu só quero chamar 'ping' e terminá-lo após a décima vez. Estou tentando fazer do link acima:
p = subprocess.Popen(['ping', 'google.com'], stdout=subprocess.PIPE)
for line in p.stdout:
print line
if re.search('10', line):
break
os.kill(p.pid, signal.SIGINT)
Mas isso não funciona.
E também quero que a saída regular de 'ping' seja exibida. Como eu faço isso?
EDIT: Não é realmente um 'ping' que eu quero fazer. Eu só estou usando isso como um exemplo de um comando com saída contínua, que com o tempo, gostaria de finalizar.
Mais especificamente, estou executando uma versão antiga do BitTorrent (v5.0.9 da terceira resposta aqui:Onde encontrar o código fonte do BitTorrent?) e eu estou chamando via script python. O bittorrent-console.py é uma versão de terminal simples, portanto, 'console'. Ele gera várias linhas periodicamente. Algo como:
saving: filename
file size: blah
percent done: 100.0
blah: blahblah
Na verdade, estou chamando por:
subprocess.call(['./bittorrent-console.py', 'something.torrent'])
Eu quero terminá-lo automaticamente quando eu vejo que é 100,0 em 'por cento feito:'.
EDIT: Estou rodando no CentOS, Python 2.6.