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.
DasIch hat geschrieben:Das liegt wahrscheinlich am buffering, welches da intern passiert aber prinzipiell blockt `fd.read(1)` auch es sei den `fd` ist non-blocking.
Stimmt: `fd.read(1)` gibt mir Daten zurück sobald sie vorhanden sind, `fd.readline()` gibt mir erst Daten zurück wenn der Prozess beendet ist. Welches internes buffering? Laut Dokumentation findet bei `bufsize=0` (= default), kein buffering statt? Oder meinst du eine Ebene unter subprocess?
readline wartet mindestens mal auf ein newline. und buffering findet eigentlich immer statt bei pipes, du kannst das gar nicht kontrollieren - das koennte wenn nur das aufgerufene programm durch flush-calls.