OVH Cloud OVH Cloud

IO::Select ou select() perde le nord, obligation d'utiliser alarm()...

2 réponses
Avatar
José
Bonjour,

Lors de l'utilisation de IO:Select je me suis aperçu que ce dernier
ne trouvait, à lire, plus de données sur le $socket alors que
ce n'est pas le cas.
La preuve, quand alarm() ou <$socket> sont remplacés par
le couple select()/read() de Perl tout baigne comme prévu.

Plutôt qu'un grand exposé, j'ai pris soin de créer 4
cas de fonctionnement de mon programme pour vous montrer le
comportement, qui me semble anormal, de IO:select (ou select...) .

Pour cela il faut lancer le programme comme précisé dans l'entête
du code source disponible ici : http://codepad.org/I8AICMTJ

Vous l'aurez compris, je suis à la recherche d'un témoignage ou
critique qui pourrait expliquer pourquoi IO::Select ou select
ne fonctionnent pas comme leurs version en C.
La seule piste que j'ai est que la lecture avec read, après un
IO::Select, désynchroniserait le pointeur (seek) sur le $socket.
Créant un retard de l'un par rapport à l'autre...

Merci pour m'avoir lu :)



PS: perso, j'aimerais utiliser IO::Select que alarm() d'où ma demande
d'aide!

2 réponses

Avatar
José
Le 01/05/2012 18:33, José a écrit :
Bonjour,



Dsl pour le flood, erreur de config dans ThunderBird...
Avatar
José
Pour cela il faut lancer le programme comme précisé dans l'entête
du code source disponible ici : http://codepad.org/I8AICMTJ



Vous pouvez utiliser le serveur de news : news.gyptis.org
pour tester!
_./send.pl server=news.gyptis.org method=crochet_
_./send.pl server=news.gyptis.org method=alarm_
_./send.pl server=news.gyptis.org method=ioselect_
_./send.pl server=news.gyptis.org method=select_

Comme vous pourrez le voir, selon la méthode employée,
toutes les lignes ne seront pas lus!

mci++