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