Stdout lesen, bei laufendem Prozess

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
the more they change the more they stay the same
IoI
User
Beiträge: 68
Registriert: Dienstag 1. Dezember 2009, 11:39

Über gibt doch eine Größe, die du ausliest. Also stdout.read(1) z.B.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
the more they change the more they stay the same
IoI
User
Beiträge: 68
Registriert: Dienstag 1. Dezember 2009, 11:39

Oh, ich hätte jetzt erwartet, dass readline blockiert, bis eine Zeile da ist
Antworten