Wenn die Bibliothek Umsetzung den Ausgangsstrom nicht bestimmen kann, zu einem interaktiven Gerät zu beziehen (und nur) Dann wird der Strom vollständig gepuffert werden, dh es wird ausgespült werden, wenn der Puffer (standardmäßig von BUFSIZ
Größe) ist voll.
Wenn nicht vollständig gepuffert, kann ein Strom gepuffert werden Leitung, das heißt es gespült wird, wenn ein '\n'
(oder der Puffer voll ist, wenn Ihre Linie wirklich lang ist) geschrieben wird, oder ungepufferte.
(ISO/IEC 9899: 1999, Kapitel 7.19.5.3 "Die fopen()
Funktion" Absatz 7. Verwenden Sie keine neuere Version des Standard bei der Hand hat, aber AFAIK dies nicht ändern.)
Was ein "interaktives Gerät" ist, ist implementierungsdefiniert. (Kapitel 5.1.2.3 "Programmausführung", Abschnitt 6.)
Die allgemeine Idee ist, dass die Dateiausgabe vollständig gepuffert sein sollte, während die Ausgabe im Terminal gepuffert sein sollte (oder ungepuffert, wie Jesse Good richtig hervorhob).
Sowohl die Pufferrichtlinie als auch die Puffergröße können über setvbuf()
geändert werden. Beachten Sie, dass jede solche Änderung passieren muss vor Sie beginnen den Zugriff auf den Stream, die etwas offensichtlich ist, sobald Sie darüber nachdenken.
Ziemlich sicher, dass es an dem Betriebssystem liegt. – Phonon
Übrigens verwendet der Code einen wxTextOutputStream, der einen wxFFileOutoutStream verwendet, der eine wxFFile verwendet. Aber das kapselt nur eine FILE-Struktur, also denke ich, dass der fflush-Mechanismus das Interessante hier ist ... – anhoppe
Wenn es gepuffert ist, dann wird es gelöscht, sobald der Puffer voll ist. Und ich verstehe nicht ganz, was Sie unter FILE-Struktur meinen , fwrite, ....) –