podivne chovani roury volane z perlu, zavirani souboru,...

Martin Povolny xpovolny na aurora.fi.muni.cz
Úterý Listopad 6 18:29:14 CET 2001


Resim nasledujici zahadu:

V perlovem programu si nejprve otevru rouru na externi program:

neco jako

    my $pipe = new IO::Pipe;
    $pipe->writer("$Conf::fsa_path/fsa_ubuild -N -o $out_file") 

pak do roury chvili zapisuji...

a nasledne ji zavru

    my $ret = $pipe->close();

potom chci vysledny soubor dale zpracovavat knihovnou v c prilinkovanou k perlu
(knihovna soubor otevira pomoci tridy "ifstream")

    my $fsa = FSA::load_dict($out_file, $Conf::fsa_path."/cz.lang");

a knihovna mi vrati "Cant open file..."

pokud ale chvili pockam

    my $tf;
    while ( ! ($tf = IO::File->new('<'.$out_file)) ) {
        print STDERR "nelze otevřít soubors fsa -- spím 1s\n";
        sleep 1;
    }
    $tf->close();
    my $fsa = FSA::load_dict($out_file, $Conf::fsa_path."/cz.lang");

tak uz program >>vetsinou<< funguje...

bohuzel jen vetsinou, nekdy (pri vetsich datech) se mi stane, ze
soubor nelze otevrit ani po one sleep smycce,
nebo dokonce, ze funkce "load_dict" projde, ale knihovna nasledne nepracuje
spravne (soubor je ale i v tomto pripade vytvoren 100% spravne)

pokud vytvoreni souboru a praci s nim rozdelim do dvou damostatnych skriptu,
funguje vse naprosto perfektne...

Tusite nekdo v cem muze byt problem ?

-- 
Martin Povolný, xpovolny na fi.muni.cz, http://www.fi.muni.cz/~xpovolny

...one can now boot directly into emacs from LILO or GRUB, 
and thus avoid the need for an operating system entirely... -- LWN


Další informace o konferenci Linux