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