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