Ich versuche, von einem offenen os.pipe()
zu lesen, um zu sehen, ob es im Moment des Lesens leer ist. Das Problem ist, dass der Aufruf von read()
dazu führt, dass das Programm dort blockiert, bis dort tatsächlich etwas zu lesen ist, aber es wird nichts geben, wenn der Test, den ich mache, erfolgreich ist.
Ich weiß, dass ich select.select()
mit einem Timeout verwenden kann, aber ich wollte wissen, ob es eine andere Lösung für das Problem gibt.
Du könntest das versuchen.
%Vor% Damit sollte thePipe.read()
nicht blockierend sein.
Von pipe (7) man-Seite:
Wenn ein Prozess versucht, von einem zu lesen leeres Rohr, dann lesen (2) wird blockiert bis Daten verfügbar sind. (...) Nicht blockierende E / A ist möglich mit die Operation fcntl (2)
F_SETFL
an Aktivieren Sie den StatusO_NONBLOCK
geöffneter Dateien Flagge.