Ich verstehe nicht, warum wait_for_input nicht wartet, wenn das Ende einer Datei erreicht ist. Ich habe es unter Mac OS X mit swi-prolog 7.6.0 und Red Hat linux 6 mit swi-prolog 5.7.11 ausprobiert. Ich öffne einen Stream zu einer Datei, die die einzige Zeile "f (1)." Enthält, ohne die Anführungszeichen. Ich bekomme das folgende Verhalten, wobei wait_for_input zurückgibt, aber das Lesen des Streams gibt end_of_file.swi-prolog wait_for_input auf Dateien, wo der Stream am Ende der Datei ist
? - öffnen ('file.prolog', lesen, InStrm, [alias (intrm), eof_action (reset)]).
InStrm = Instrm.
? - wait_for_input ([Instrm], RL, 15).
RL = [Instrm].
? - lesen (Instrm, Trm).
Trm = f (1).
? - wait_for_input ([Instrm], RL, 15).
RL = [Instrm].
? - lesen (Instrm, Trm).
Trm = Ende_der_Datei.
Ich benutze eof_action (reset), so dass, wenn ein anderer Prozess an die Datei anfügt, der Leser die neuen Daten erhalten wird.