line-bufferred file

Michal Rybarik michal na rybarik.sk
Úterý Červen 7 00:58:20 CEST 2005


Michal Marek  wrote / napísal (a):

>On Sun, Jun 05, 2005 at 06:15:38PM +0200, Michal Rybarik wrote:
>  
>
>>potrebujem patchnut C-ckovy zdrojak tak, aby sa zapis do suboru 
>>bufferroval po riadkoch.
>>ak je subor otvarany cez fopen(), to viem - staci zavolat 
>>setlinebuf(subor) a je to.
>>mam tu vsak teraz iny zdrojak, kde je subor otvarany cez open().
>>nasiel som ze snad by mohlo pomoct fcntl a nastavit flag O_DIRECT, ale 
>>nepomaha to.
>>    
>>
>
>write() je syscall, ktery proste zapise do souboru to co dostane,
>nastaveni O_DIRECT jenom ovlivnuje, jak moc bude kernel cachovat --
>ostatni aplikace nepoznaji rozdil. Na (radkove) bufferovani by byla
>potreba nejaka nadstavba, nabizi se fdopen(fd, "w") a dal zapisovat pres
>funkce stdio :)
>
>  
>
no, cielom nie je ani tak zaviest riadkove bufferovanie, ako skor zrusit 
bufferovanie vystupu alebo ho aspon zredukovat na riadkove. aplikaciu 
totiz potrebujem spustit ako child a presmerovat na seba je stdin a 
stdout, a ovladat zo skriptu. stdin aplikacie funguje OK, poslem jej 
data a dostane ich. to co vsak vypise aplikacia dostanem vsak az naraz 
pri ukonceni, (ak ju pustim na terminale tak je vsetko OK, vystupy vidim 
hned).

riesil som to iste pri inej aplikacii, pomohol setlinebuf(stdout), ale 
tu mi to nefunguje. ?

--
s pozdravom
michal na rybarik.sk



Další informace o konferenci Linux