Timeout sur un STDIN [Perl] - Perl - Programmation
Marsh Posté le 06-04-2004 à 15:51:20
Taz a écrit : E/S non bloquantes ou thread de controle |
thread de controle j'y ai pensé mais on m'a demandé de faire plus simple
E/S non bloquantes tu entends quoi par là?
J'sais pas si t autant gourou du perl que du C, mais t'aurais pas un exemple perl
Marsh Posté le 06-04-2004 à 15:53:13
en perl j'ai aucune idée. ben tout simplement, quand tu lis, ça n'est pas bloquant, donc t'attends pas comme un couillon. cela dit, au niveau de la connection, si ça se ferme bourrin, le socket se ferme, ton stdin va bouffer du EOF et ça terminera forcément
Marsh Posté le 06-04-2004 à 15:55:56
bin ex:
telnet serveur port
attend comme un couillon un stdin
c'est justement le problème, on est en audit et les auditeurs aiment pas, d'ailleurs ils se sont amusé à en lancer des centaines et ca l'a presque tué le serveur
bon puisque le script attend comme un couillon, jvois pas comment fermer le stdin ou quitter le script si yen a un autre a coté qui roule et le tue après 5 secondes...
Marsh Posté le 06-04-2004 à 15:59:09
ben lecture non bloquante voilà
Marsh Posté le 06-04-2004 à 16:01:08
Taz a écrit : ben lecture non bloquante voilà |
ouais mais jsais pas c'est quoi lecture non bloquante et jsais meme pas si ca l'existe sous perl
c'est quoi le terme anglais que j'interroge google?
Marsh Posté le 06-04-2004 à 16:03:22
ReplyMarsh Posté le 06-04-2004 à 16:07:02
non ok là jpense qu'on c'est pas compris
jsais comment arreter un socket fait par perl, mais c pas ca la question
j'ai un script toto.pl qui peut être exécuter si n'importe qui tappe dans shell telnet serveur port
donc faut que ce soit le script toto.pl qui s'arrete de lui même après 5 secondes alors qu'il attend un STDIN
tu me suis?
Marsh Posté le 06-04-2004 à 16:21:49
bon reglé
Code :
|
Marsh Posté le 06-04-2004 à 17:55:41
regarde Term::ReadKey
http://search.cpan.org/~jstowe/Ter [...] ReadKey.pm
tu peut faire une lecture non bloquante avec ReadKey(-1) ou ReadKey($timeout) (ou ReadLine aussi)
ca return undef en cas de timeout
dans mon souvenir il fallait passer en mode ReadMode('cbreak'), puis repasser en ReadMode('normal') apres, ou un truc du genre
Marsh Posté le 06-04-2004 à 23:04:02
pospos a écrit : regarde Term::ReadKey |
ah, tjrs bon à savoir ca. J'avais deja utilisé ce module pour faire la saisit de mot de passe sans que celui-ci ne saffiche
de toute facon c'est pas mon script, le mec travaille que le vendredi mais vu quon se fait auditer fallait le corriger OPC
Marsh Posté le 06-04-2004 à 23:29:02
c'est chelou ces audites ou il faut corriger directe! Ya une visite de controle apres?! Halala le monde fou des entreprises...
Marsh Posté le 06-04-2004 à 23:34:59
pospos a écrit : c'est chelou ces audites ou il faut corriger directe! Ya une visite de controle apres?! Halala le monde fou des entreprises... |
ouais c'est plutot impressionnant depuis la semaine dernière
moi jsuis tout jeune, bientot 21 ans, j'ai terminé mes études en mai dernier et j'y retourne en aout alors je bosse là entre temps.
C'est une audit de la Corp pour voir si tout est en règles au niveau des applications et surtout des serveurs
là ils ce qu'ils ont fait, c'est qu'ils ont lancé des centaines de telnet sur le serveur à ce port, et vu que ca se fermait pas, celui ci a durement souffert
Marsh Posté le 06-04-2004 à 15:47:52
J'ai un petit script accessible par telnet sur un port X. Dans celui-ci, ya un STDIN.
Mais voilà, j'aimerais tuer le script après 5 secondes, histoire que les connections telnet ne s'accumule pas
je cherche du coté de SIG TERM mais jai pas réussi jusqu'ici
merci