Seite 1 von 1

Stdout lesen, bei laufendem Prozess

Verfasst: Samstag 20. Februar 2010, 11:52
von Dav1d
Ich hab ein kleines Problem mit subprocess bzw. stdout

Es läuft ein Prozess im "slave" Modus, gestartet mit subprocess, stdin=PIPE, stdout=PIPE, stderr=STDOUT, soweit so gut, den Prozess mit Daten zu "füttern" ist kein Problem

Code: Alles auswählen

stdin.write('xyz')
Allerdings brauche ich die Rückgabe die erfolgt (in stdout) wenn ich dem Prozess Daten liefere, das Problm ist, ich brauche sie sofort und nicht wenn der Prozess beendet ist.

Code: Alles auswählen

stdout.read()
funktioniert, aber nur wenn der Prozess beendet ist, wie kann ich von einem laufenden Prozess stdout auslesen, ob komplett oder nur die letzte Zeile ist egal, besser wäre komplett

Verfasst: Samstag 20. Februar 2010, 12:07
von IoI
Über gibt doch eine Größe, die du ausliest. Also stdout.read(1) z.B.

Verfasst: Samstag 20. Februar 2010, 12:10
von Dav1d
Ja, danke
Ich hatte irgendwie ein Brett vorm Kopf :lol:
IoI: das funktioniert auch

Aber das hier auch

Code: Alles auswählen

while True:
    line = stdout.readline() # stdout = process.stdout = PIPE
    if not line:
        break
    print 'STDOUT>>> ' + line.rstrip()
Danke

Verfasst: Montag 22. Februar 2010, 21:00
von IoI
Oh, ich hätte jetzt erwartet, dass readline blockiert, bis eine Zeile da ist