ausgabe von prtinf erst nach Zeilenumbruch
Hallo Leute, ich habe mal eine Frage zum Verhalten der XKonsole. Ein C-Programm führt während einer Funktion mehrere printf ohne \n aus. Es erfolgt jedoch keine Ausgabe auf die X-Konsole (wterm, xterm) solange bis ein \n ausgegeben wird. Woran kann denn das liegen? Gruß Hannes
On Mon, 2003-09-29 at 18:18, hannes.vogelmann@imk.fzk.de wrote:
Ein C-Programm führt während einer Funktion mehrere printf ohne \n aus. Es erfolgt jedoch keine Ausgabe auf die X-Konsole (wterm, xterm) solange bis ein \n ausgegeben wird.
Woran kann denn das liegen?
printf ist buffered IO. Wenn Du direkt ausgeben willst, mußt Du den Buffer flushen oder write() benutzen. HTH V.
hannes.vogelmann@imk.fzk.de schrieb:
Ein C-Programm führt während einer Funktion mehrere printf ohne \n aus. Es erfolgt jedoch keine Ausgabe auf die X-Konsole (wterm, xterm) solange bis ein \n ausgegeben wird.
Woran kann denn das liegen?
Es ist eine gepufferte Ausgabe. Du musst also explizit dafuer sorgen, dass es sofort ausgegeben wird - das nennt sich uebli- cherweise "flush" (von engl. "leeren"; der Puffer wird also geleert und damit erfolgt die Ausgabe). Wie es in C geht, weiss ich ehrlich gesagt nicht, da wird das hier nicht programmieren, aber das solltest Du leicht herausfinden koennen; in C++ geht es sehr einfach mit: cout << "Text" << flush; Gruesse, Th.
On Mon, 2003-09-29 at 18:39, Thomas Hertweck wrote:
hannes.vogelmann@imk.fzk.de schrieb:
Ein C-Programm führt während einer Funktion mehrere printf ohne \n aus. Es erfolgt jedoch keine Ausgabe auf die X-Konsole (wterm, xterm) solange bis ein \n ausgegeben wird.
Woran kann denn das liegen?
Es ist eine gepufferte Ausgabe. Du musst also explizit dafuer sorgen, dass es sofort ausgegeben wird - das nennt sich uebli- cherweise "flush" (von engl. "leeren"; der Puffer wird also geleert und damit erfolgt die Ausgabe). Wie es in C geht, weiss ich ehrlich gesagt nicht, da wird das hier nicht programmieren, aber das solltest Du leicht herausfinden koennen; in C++ geht es sehr einfach mit: cout << "Text" << flush;
man 3 fflush Ralf
Am Mon, 29 Sep 2003, schrieb Thomas Hertweck:
hannes.vogelmann@imk.fzk.de schrieb:
Ein C-Programm führt während einer Funktion mehrere printf ohne \n aus. Es erfolgt jedoch keine Ausgabe auf die X-Konsole (wterm, xterm) solange bis ein \n ausgegeben wird.
Woran kann denn das liegen?
Es ist eine gepufferte Ausgabe. Du musst also explizit dafuer sorgen, dass es sofort ausgegeben wird - das nennt sich uebli- cherweise "flush" (von engl. "leeren"; der Puffer wird also geleert und damit erfolgt die Ausgabe). Wie es in C geht, weiss ich ehrlich gesagt nicht, da wird das hier nicht programmieren, aber das solltest Du leicht herausfinden koennen; in C++ geht es sehr einfach mit: cout << "Text" << flush;
Danke, deas wars. gruß Hannes
participants (5)
-
Hannes Vogelmann
-
hannes.vogelmann@imk.fzk.de
-
Ralf Corsepius
-
Thomas Hertweck
-
Volker Kroll