Python Execute um subprocesso daemon e leia stdout
Preciso executar um programa e reunir sua saída para stdout. Este programa (socat) precisa ser executado em segundo plano durante o script python. O Socat fica no modo dameon quando é executado, mas primeiro gera algumas linhas para o stdout necessárias para o restante do meu scrip
Command:socat -d -d PTY: PTY:
Saída
2011/03/23 21:12:35 socat[7476] N PTY is /dev/pts/1
2011/03/23 21:12:35 socat[7476] N PTY is /dev/pts/2
2011/03/23 21:12:35 socat[7476] N starting data transfer loop with FDs [3,3] and [5,5]
...
Eu basicamente quero executá-lo no início do meu programa e deixá-lo em execução até o término do script, mas preciso ler os dois nomes / dev / pts / X em pytho
Alguém pode me dizer como fazer isso?
Eu vim com isso que simplesmente trava, eu acho, porque está bloqueando o processo filho para termina
#!/usr/bin/python
from subprocess import Popen, PIPE, STDOUT
cmd = 'socat -d -d PTY: PTY: &'
p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
output = p.stdout.read()
# Process the output
print(output)
Obrigado por qualquer ajud
EDIT: Parece que pode escrever para o stderr, mas o script ainda permanece com e sem a & até leitura do stder