Python Ejecute un subproceso de daemon y lea stdout

Necesito ejecutar un programa y recopilar su salida a stdout. Este programa (socat) debe ejecutarse en segundo plano mientras dure el script de python. Socat se encuentra en modo Dameon una vez que se ejecuta, pero primero genera algunas líneas para stdout que necesito para el resto de mi script.

Command:socat -d -d PTY: PTY:

Salida

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]

...

ásicamente, quiero ejecutar eso al comienzo de mi programa y dejarlo en ejecución hasta la finalización del script, pero necesito leer los dos nombres / dev / pts / X en Python.

¿Puede alguien decirme cómo hacer esto

e me ocurrió esto que simplemente se cuelga, supongo que porque está bloqueando la finalización del proceso secundario.

#!/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)

Gracias por cualquier ayud

EDIT: Parece que puede escribirle a stderr, pero el guión sigue colgándose con y sin e incluso leyendo de stderr.

Respuestas a la pregunta(3)

Su respuesta a la pregunta