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

mira mira na tmapy.cz
Středa Listopad 7 06:09:33 CET 2001



Martin Povolny wrote:

> 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...
>

 Patrně se soubor otevírá ještě ve chvílí, kdy OS nestihl provést všechny
náležitosti týkající se zavření souboru ...
Ale na to by teoreticky mohl být nějaký test (nějaká funkce).

S pozdravem,
                        Michal Řada



Další informace o konferenci Linux