Fonction d'alarme Perl
La description
Cette fonction règle «l'alarme», amenant le processus en cours à recevoir un signal SIGALRM en EXPR secondes. Si EXPR est omis, la valeur de $ _ est utilisée à la place.
La temporisation réelle n'est pas précise, car différents systèmes implémentent la fonctionnalité d'alarme différemment. Le temps réel peut être jusqu'à une seconde de plus ou de moins que la valeur demandée. Vous ne pouvez régler qu'une seule alarme à la fois. Si une minuterie est déjà en cours d'exécution et que vous effectuez un nouvel appel à la fonction d'alarme, la minuterie d'alarme est réinitialisée à la nouvelle valeur. Une minuterie en cours peut être réinitialisée sans régler une nouvelle minuterie en spécifiant une valeur de 0.
Syntaxe
Voici la syntaxe simple de cette fonction -
alarm EXPR
alarm
Valeur de retour
Cette fonction renvoie une valeur entière, c'est-à-dire. nombre de secondes restantes pour la minuterie précédente.
Exemple
Voici l'exemple de code montrant son utilisation de base -
#!/usr/bin/perl
eval {
local $SIG{ALRM} = sub { die "alarm\n" }; # NB: \n required
alarm $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
if ([email protected]) {
die unless [email protected] eq "alarm\n"; # propagate unexpected errors
# timed out
} else {
# didn't
}