[Python-de] fifo mit readline() auslesen

Georg Mischler schorsch at schorsch.com
Die Feb 8 22:27:15 CET 2005


Christian Helmbold wrote:

> Die bisherige "Lösung" blockiert tatsächlich, aber nur bis das erste Mal
> etwas in die Fifo geschrieben wird.

Ich glaube, bei deiner Version wird die Blockierung schon in dem
Moment aufgehoben, wenn der Sender die fifo zum schreiben
*öffnet*, auch wenn er gar nichts schreibt.


> Danach dreht die Schleife durch und
> schreibt am laufenden Band "loop" auf die Konsole. Ich will aber einen
> Serverprozess haben, der fortwährend Nachrichten aus einer Fifo saugt und
> blockiert (d.h. vom Betriebssystem suspendiert wird), wenn keine Daten in
> die Fifo geschrieben werden.

Select blockiert für die mit dem timeout-Argument angegebene
Anzahl Sekunden, falls nicht vorher Daten in der fifo anfallen.
Von den mir bekannten Lösungen kommt das deinem Wunsch eindeutig
am nächsten.

Kontrollierst du eigentlich das andere Ende auch selber?
Dann könntest du die übertragenen Blöcke mit einem '\n'
abschliessen, und mit File-Objects und readline() arbeiten,
statt mit den low-level IO-Routinen, wie du es im Moment
machst.


-schorsch

-- 
Georg Mischler  --  simulations developer  --  schorsch at schorsch com
+schorsch.com+  --  lighting design tools  --  http://www.schorsch.com/