IO::Select can_read retourne immédiatement une liste vide

IO::Select can_read retourne immédiatement une liste vide - Perl - Programmation

Marsh Posté le 14-02-2007 à 01:54:48    

Bonsoir à tous,
Tout est à peu dit dans le titre.
J'ai un programme qui crée plusieurs fils avec un pipe anonyme associé à chacun pour recevoir des infos chez le père.
J'utilise IO::Select mais malheureusement, la fonction can_read me renvoit immédiatement une liste vide (même si je mets un timeout à 60 sec).
Mes handles sont bons car je peut lire dedans, ils sont bien dans mon select et il y a bien des données en attente de lecture.
 
Là, je seche, ça fait trois plombes que je suis sur google, mais je ne trouve pas de solution...

Reply

Marsh Posté le 14-02-2007 à 01:54:48   

Reply

Marsh Posté le 14-02-2007 à 11:15:41    

Quelques infos supplémentaires. Voila une version light du code qui pose problème :
 

Code :
  1. my %pid = &createChildren(); # avec %pid(pid du fils) = (fh de lecture, fh d'écriture)
  2. my $readset = new IO::Select;
  3. foreach my $processID (keys %pid){
  4.      $readset->add($pid{$processID}->[0]);
  5. }
  6. my @ready = $readset->can_read;
  7. foreach my $fh (@ready){
  8.      print <$fh>;
  9. }


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed