gvdmoort
2010-05-18 19:15:51 UTC
Bonjour à tous,
J'exécute ceci
#!/usr/bin/perl
use strict;
while (1) {
print ". ";
# sleep 1;
}
et comme attendu, mon terminal se couvre de petits points.
J'interrompt avec Ctl-c
Je décommente la ligne avec le sleep, j'exécute le script... et rien
ne se passe, le curseur reste immobile.
Je fais un Ctl-c, j'ajoute un \n à la chaîne
print ". \n";
et le résultat est bien un point par ligne à intervalle d'une seconde.
Je ne comprends absolument pas, qu'est-ce qui explique ça ? (Inutile
de préciser que la chose se déroulait avec un script plus élaboré et
que j'ai passé un temps fou à en trouver la raison...)
Pour aller plus loin, qu'est-ce qui pourrait remplacer cette
construction rudimentaire pour lancer une fonction à intervalle
régulier ?
while (1) {
&faire_quelque_chose
sleep 15;
}
Comme la fonction s'exécute en un temps variable, l'intervalle
s'allonge et l'exécution se décale dans le temps; comme elle collecte
des données que je souhaite intégrer d
J'exécute ceci
#!/usr/bin/perl
use strict;
while (1) {
print ". ";
# sleep 1;
}
et comme attendu, mon terminal se couvre de petits points.
J'interrompt avec Ctl-c
Je décommente la ligne avec le sleep, j'exécute le script... et rien
ne se passe, le curseur reste immobile.
Je fais un Ctl-c, j'ajoute un \n à la chaîne
print ". \n";
et le résultat est bien un point par ligne à intervalle d'une seconde.
Je ne comprends absolument pas, qu'est-ce qui explique ça ? (Inutile
de préciser que la chose se déroulait avec un script plus élaboré et
que j'ai passé un temps fou à en trouver la raison...)
Pour aller plus loin, qu'est-ce qui pourrait remplacer cette
construction rudimentaire pour lancer une fonction à intervalle
régulier ?
while (1) {
&faire_quelque_chose
sleep 15;
}
Comme la fonction s'exécute en un temps variable, l'intervalle
s'allonge et l'exécution se décale dans le temps; comme elle collecte
des données que je souhaite intégrer d