[linux] Rura obojsmerna
Matus "fantomas" Uhlar
uhlar na fantomas.sk
Pondělí Duben 28 09:14:17 CEST 2003
-> Aplikacia "rev" vyuziva tzv. stream (FILE*) funkcie z (g)libc. Cize pre
-> zapis a citanie pouziva cosi na styl fgets()/fputs(). V konecnom
-> dosledku tieto volania (g)libc zavolaju aj tak systemove read()/write(),
-> ale neodpustia si pri tom bufferovanie.
->
-> Ked vsak na prikazovom riadku spustis len
->
-> $ rev
->
-> tak nedostavas vystup kazdy 4096 bajtov. Preco? Lebo stream (FILE*)
-> volania z (g)libc zdetekuju, ze vstup alebo vystup je terminal a teda
-> bufferovanie nie je ziaduce. Filedescriptor, ktory vznikol cez pipe()
-> vsak evidentne do kategorie nebufferovanych vstupov resp. vystupov
-> nepatri.
obavam sa ze jedine co glibc testuje je, ci je stdout terminal. Ak ako,
nebufferuje, ak nie, bufferuje...
existuje tu teda pomerne hlupy workaround k danej situacii a to pouzit
terminal :)
v pripade ze potrebujes nebufferovat vystup v aplikacii ktoru programujes,
mozno by si sa mal pohrat s funkciou setvbuf() resp setlinebuf()
--
Matus "fantomas" Uhlar, uhlar na fantomas.sk ; http://www.fantomas.sk/
Warning: I don't wish to receive spam to this address.
Varovanie: Nezelam si na tuto adresu dostavat akukolvek reklamnu postu.
I intend to live forever - so far so good.
Další informace o konferenci linux