Posted By: snake () on 'CZunix'
Title:     Re: buffer stdout streamu
Date:      Fri Sep 28 15:15:42 2007

> Neni to nejaka blbost? To, jestli vystup bude spojitej, nebo bufferovanej,
> si ridi jen ten jej generujici program, takze si musis popovidat s kamaradem

Blbost to neni a Tva domnenka je nespravna. Flushovani neridi program, ale 
system. Viz dale.

> Fortranem :) Treba ja v perlu pouzivam STDOUT->autoflush(1); a pak se to 
> nebufferuje. 
> Ale nikdy jsem nezaznamenala, ze by se to chovalo jinak pri sypani ven
> a sypani do souboru. Nicmene manzel mi tady rika, ze prej ten program

man perlvar:
$|      If set to nonzero, forces a flush right away and after every
write or print on the currently selected output channel.
Default is 0 (regardless of whether the channel is really
buffered by the system or not; $| tells you only whether you've
asked Perl explicitly to flush after each write).  STDOUT will
typically be line buffered if output is to the terminal and
block buffered otherwise...

> se na to muze podivat, kam vystup leze, a muze se podle toho rozhodnout, 
> lec vetsina programu to nedela. Tak jen kdyby to nahodou ten Fortran

Jo a ne. Program se muze rozhodnout a delat nejaky flushe navic, prestoze jede 
napriklad do souboru a system mu nahodi 4K buffer. Ale samotny zpusob 
bufferovani zavisi na systemu. Ja si takhle nabehl s perlovskym redirem do 
squidu, ktery na terminalu fungoval presne tak, jak jsem chtel, ale v pajpe ke 
squidu v ostrem chodu najednou nefachal a vsem se zastavil internet. 
Redirektor holt cekal na dalsi vstup, aby na vystup nacpal vice pismenek, 
jenze browsery zas cekaly na splneni prvniho pozadavku nez zaslaly dalsi... 
Problem byl evidentne v tom, ze terminal sel po lajne, jenze pri ostrem 
behu v pajpe po blocich. Resenim byl samozrejme ten autoflush.

snake

Search the boards