[linux] stderr pipe redirection, buffering

Matus UHLAR - fantomas uhlar na fantomas.sk
Čtvrtek Červen 7 15:50:45 CEST 2007


> > Otázka. Prečo je to tak?

On 07.06.07 15:29, Andrej Hosna wrote:
> Bufferovanie je rozdielne pre stdout a stderr. Pre stderr sa myslim vypisuje 
> pri najneskor pri /n. (man setbuf)

...a je to tak preto, aby bol stderr vypisovany co najskor, zatialco stdout,
pokial nesmeruje na terminal, bude bufferovany, aby sa praca s nim co
najviac zefektivnila. Volat system pre zapis do suboru po kazdom riadku nie
je velmi efektivne, buffering sposobi, ze prikaz bude volany len raz za
X bytov.

> > Dá sa urobi» tak, aby sa poradie výstupov nezmenilo? Pomocou setvbuf?

> Ano

ano, ale naco?

> > Dá sa zisti» ako je nastavené bufrovanie?
> Ano, jednoducho z manualovej stranky.

>  Normally all files are block buffered.  When the first I/O operation occurs 
> on  a file, malloc(3) is called, and a buffer is obtained.  If a stream 
> refers to a terminal (as std-out normally does) it is line buffered.  The 
> standard error stream stderr  is  always  unbuffered  by default.

man stdio, pripadne man setbuf mozno odpovedia viac...
-- 
Matus UHLAR - fantomas, uhlar na fantomas.sk ; http://www.fantomas.sk/
Warning: I wish NOT to receive e-mail advertising to this address.
Varovanie: na tuto adresu chcem NEDOSTAVAT akukolvek reklamnu postu.
The 3 biggets disasters: Hiroshima 45, Tschernobyl 86, Windows 95



Daląí informace o konferenci linux