El subproceso del programa Python C se cuelga en "for line in iter"
Ok, estoy intentando ejecutar un programa en C desde un script de python. Actualmente estoy usando un programa de prueba C:
#include <stdio.h>
int main() {
while (1) {
printf("2000\n");
sleep(1);
}
return 0;
}
Para simular el programa que usaré, que toma lecturas de un sensor constantemente. Entonces estoy tratando de leer la salida (en este caso"2000"
) del programa C con subproceso en python:
#!usr/bin/python
import subprocess
process = subprocess.Popen("./main", stdout=subprocess.PIPE)
while True:
for line in iter(process.stdout.readline, ''):
print line,
Pero esto no está funcionando. De usar sentencias impresas, ejecuta el.Popen
la línea entonces espera enfor line in iter(process.stdout.readline, ''):
, hasta que presione Ctrl-C.
¿Por qué es esto? Esto es exactamente lo que la mayoría de los ejemplos que he visto tienen como su código y, sin embargo, no lee el archivo.
Editar:
¿Hay alguna forma de hacerlo funcionar solo cuando hay algo que leer?