[PERL] Souci de $SIG{ALRM}
Résolu
Ninja_En_Short
Messages postés
133
Date d'inscription
Statut
Membre
Dernière intervention
-
Ninja_En_Short Messages postés 133 Date d'inscription Statut Membre Dernière intervention -
Ninja_En_Short Messages postés 133 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un souci avec une de mes interruptions dans mon programme.
Voilà un morceau du corps, il est modifié pour raison de confidentialité mais tout fonctionne hormis l'interruption :
eval
{
local $SIG{ALRM} = sub {return -1};
alarm $temps = 5; #Temps est un paramètre de la fonction passé plus haut, je lui mets 5 secondes pour l'exemple
while($tableau_fichier)
{
#Traitements sur les fichiers
#Incrémentation d'un compteur
$nbreFichiersTraites++;
#Le programme attends dix secondes
sleep 10;
}
#Si tout est passé le compteur passe à 0.
alarm 0;
};
#On retourne le compteur
return $nbreFichiersTraites;
Le souci se situe au niveau du sleep. Il attends dix secondes entre chaque traitement puis m'affiche qu'il a effectué tous les traitements... et je comprends pas pourquoi vu que l'interruption est sensée se déclencher au bout de 5 secondes.
Si quelqu'un voit mon erreur merci à lui.
J'ai un souci avec une de mes interruptions dans mon programme.
Voilà un morceau du corps, il est modifié pour raison de confidentialité mais tout fonctionne hormis l'interruption :
eval
{
local $SIG{ALRM} = sub {return -1};
alarm $temps = 5; #Temps est un paramètre de la fonction passé plus haut, je lui mets 5 secondes pour l'exemple
while($tableau_fichier)
{
#Traitements sur les fichiers
#Incrémentation d'un compteur
$nbreFichiersTraites++;
#Le programme attends dix secondes
sleep 10;
}
#Si tout est passé le compteur passe à 0.
alarm 0;
};
#On retourne le compteur
return $nbreFichiersTraites;
Le souci se situe au niveau du sleep. Il attends dix secondes entre chaque traitement puis m'affiche qu'il a effectué tous les traitements... et je comprends pas pourquoi vu que l'interruption est sensée se déclencher au bout de 5 secondes.
Si quelqu'un voit mon erreur merci à lui.
A voir également:
- [PERL] Souci de $SIG{ALRM}
- Denon perl pro test - Accueil - Audio
- Active perl - Télécharger - Édition & Programmation
- Capcut sig - Télécharger - Montage & Édition
- Bourses en cartographie teledetection et sig ✓ - Forum Études / Formation High-Tech
- DzSoft Perl Editor - Télécharger - Édition & Programmation
2 réponses
Salut,
If you want to use alarm() to time out a system call you need to use an eval()/die() pair.
Si on utilise alarm() pour interruption on doit utiliser la paire eval() / die()
If you want to use alarm() to time out a system call you need to use an eval()/die() pair.
Si on utilise alarm() pour interruption on doit utiliser la paire eval() / die()