Proc printf ceká na \n?

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Úterý Říjen 9 09:26:13 CEST 2001


> > přečte vše a nečeká to tam na \n. Přesto se mi výstup na obrazovce z
> > příkazu printf objeví až v momentě, kdy je na výstup posláno \n. (Pokud
> > tam dám printf("%s\n",buf), výstup se objeví vždy rovnou okamžitě.
> 
> fflush(stdout);

	To je to same, jako to '\n';-), prectete si o bufferovanych a
nebufferovanych operacich v GLIBC - osobne Vam spise doporucuji
nastudovani 'man 3 setvbuf' standardni (ANSI C) funkce...(tim nerikam,
ze fflush neni v ANSI C!) a jake maji default nastaveni jednotlive
proudy (stdin, stdout, stderr - kazdy to ma jinak:->)

> Cekani na konec radky je jednak kvuli rychlosti a jednak kdyz zapisuje na
> terminal vice procesu nebyl na terminalu velky gulas.

	Ani jedno ani druhe... - kdyz pouzijete bufferovane operace, nejspise
ocekavate, ze budou plnit svou funkci, jedinym zpusobem jak jim rici
'vylej' cache je bud flush nebo specialni dohodnuty znak, coz v default
nastaveni stdout je prave '\n' (ale jiz IMHO ne '\r')

	Pokud se Vam default chovani nelibi, zmente si ho (setvbuf) a nebo
pouzijte funkce, ktere Vam vice vyhovuji (napr. nebuferove)

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux