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
}