Der Unterprozess des Python C-Programms hängt bei "for line in iter"
Ok, also versuche ich, ein C-Programm über ein Python-Skript auszuführen. Derzeit verwende ich ein Test-C-Programm:
#include <stdio.h>
int main() {
while (1) {
printf("2000\n");
sleep(1);
}
return 0;
}
Zur Simulation des Programms, das ich verwenden werde und das ständig Messwerte von einem Sensor erfasst. Dann versuche ich die Ausgabe zu lesen (in diesem Fall"2000"
) aus dem C-Programm mit Unterprozess in Python:
#!usr/bin/python
import subprocess
process = subprocess.Popen("./main", stdout=subprocess.PIPE)
while True:
for line in iter(process.stdout.readline, ''):
print line,
aber das funktioniert nicht. Ausgehend von der Verwendung von print-Anweisungen wird der Befehl ausgeführt.Popen
Schlange wartet dann umfor line in iter(process.stdout.readline, ''):
, bis ich Strg-C drücke.
Warum ist das? Dies ist genau das, was die meisten Beispiele, die ich gesehen habe, als Code haben, und dennoch liest es die Datei nicht.
Bearbeiten:
Gibt es eine Möglichkeit, es nur dann zum Laufen zu bringen, wenn es etwas zu lesen gibt?