1

Salut,
j'ai besoin de traiter la sortie d'un programme dans un script perl, et notamment d'utiliser seek a un moment donné. Mais j'ai consaté que seek faile a chaque fois que je l'utilise, et ensuite en cherchant du coté de open j'ai découvert qu'un open pipé forkait le process. Pourtant j'arrive jamais a être dans le fils, tous mes tests sur le pid resultant du open m'indiquent que je suis dans le process père confus (en C je n'ai jamais eu ce probleme)... enfin dans tous les cas, mon but est de réussir un seek(IN, -1, 1) apres un open(IN, 'prog' . $file . '|').
Quelqu'un pourrait me tirer d'affaire?
merci smile

2

Normalement ton seek devrait te renvoyer EBADF, ce qui veut dire que le flux venant d'un pipe n'est pas "seekable".
So much code to write, so little time.

3

seek me renvoie 0 et apres pour la nature de l'erreur je sais pas vraiment comment faire...
apres une recherche sur google voila ce que j'obtient:
use POSIX;
use Errno;
...
if (!seek IN, 1, -1)
{
    if ($!{EBADF})
    {
        print "EBADF\n";
    }
    else
    {
        my $errno = POSIX::errno();
        print "$errno\n";
    }
}

j'ai 0 comme valeur pour errno.
[Edit: 0 pour le premier appel a seek, et 29 pour les suivants]

4

ah ce sont les constantes de errno.h qui sont exportées! Donc j'obtiens un ESPIPE (illegal seek).
et en réduisant ce le code d'au dessus à:
print "$!\n" if (!seek IN, -1, 1)
j'ai "illegal seek" à chaque fois.

5

bah tu peux pas seeker sur un pipe de toute façon...
So much code to write, so little time.

6

ok comme ça c'est reglé happy
je devrais pouvoir faire autrement
merci