Problem s named pipe

Marián Kyral marian.kyral na worldonline.cz
Pondělí Prosinec 31 18:58:55 CET 2001


Pavel Kankovsky wrote:

 > On Fri, 28 Dec 2001, Marián Kyral wrote:
 >
 >
 > Pri provadeni tohoto prikazu se stane nasledujici:
 >
 > 1. instance shellu, ktery ma za ukol spustit gzip, se pokusi otevrit rouru
 >    pro zapis, nacez se zablokuje
 > 2. bzip2 otevre rouru pro cteni, coz odblokuje shell z bodu 1
 > 3. je spusten gzip
 > 4. bzip2 z nejakeho ne zcela pochopitelneho duvodu rouru uzavre (*)
 > 5. gzip se pokusi zapsat do roury, ale ta je uz uzavrena, takze dostane
 >    pres cumak a skonci prave s tim SIGPIPE
 > 6. bzip2 rouru znovu otevre pro cteni, cimz se zablokuje, protoze
 >    do roury nikdo nechce zapisovat
 >
 > Chyba je v tom, ze bzip2 vstupni soubor otevira nadvakrat, coz nejde
 > s semantikou pojmenovanych rour zcela dohromady. Aby to fungovalo, bylo
 > by nutno bud zapisovat dvoufazove (jednou pouze otevrit a zavrit a pak
 > teprve zacit opravdu zapisovat), nebo rouru drzet otevrenou pro cteni bez
 > ohledu na to, co s ni provadi bzip2.
 >
 > Aha...ted, kdyz se divam do zdrojaku bzipu, tak vidim, ze to ma asi na
 > svedomi funkce fileExists() v bzip2.c, ktera existenci souboru zjistuje
 > rafinovane tim, ze se ho pokusi otevrit pro cteni. Asi by to chtelo
 > autorum vysvetlit, ze to neni nejlepsi napad.
 >
 > (*) jina mnou testovana verze v tomto miste jeste provede lstat(), zjisti,
 > ze roura neni regulerni soubor a skonci
Díky za komplexní rozbor problému. Asi to bude chtít nějakou opravu bzipu.
Nicméně bez parametrů to opravdu čte ze standartního vstupu, takže mi nakonec 
stačí normální roura :-)

-- 
Marián Kyral
email : marian.kyral na worldonline.cz
ICQ#  : 62938937
WWW   : mkyral.web.worldonline.cz

           checking for intelligent life... not found
                            The Gimp 1.2 (configure)




Další informace o konferenci Linux