Fonction de bibliothèque C -alarm()
Bibliothèque standard C - <signal.h>
Description
alarmLa fonction est une fonction de la bibliothèque standard C, utilisée pour envoyer après un temps spécifié.SIGALRMSignal au processus appelant. Cette fonction est définie dans<unistd.h>Dans le fichier d'en-tête.
Syntaxe
unsigned int alarm(unsigned int seconds);
Paramètre
unsigned int seconds: spécifie après combien de secondes envoyerSIGALRMSignal. Si le paramètre est 0, toute alarme précédemment définie est annulée.
Valeur de retour
- En cas de succès, renvoie le temps restant sur l'alarme précédemment définie (en secondes).
- S'il n'y a pas d'alarme précédemment définie, renvoie 0.
Exemple
Ce qui suit est un exemple utilisantalarmLa fonction définit une alarme et gèreSIGALRMExemple de programme pour le signal. Le programme envoie après 5 secondesSIGALRMsignal, et exécute le gestionnaire de signal correspondant lorsque le signal est capturé.
Exemple
#include <signal.h>
#include <unistd.h>
// Gestionnaire de signal
void handle_sigalrm(int sig) {
printf("Signal %d capté : Alarme déclenchée\n", sig);
}
int main() {
// Définir le gestionnaire de signal pour SIGALRM
signal(SIGALRM, handle_sigalrm);
// Programmer une alarme pour déclencher le signal SIGALRM après 5 secondes
alarm(5);
printf("Alarme programmée pour 5 secondes\n");
// Boucle infinie, en attente du signal
while (1) {
printf("En cours d'exécution...\n");
sleep(1);
}
return 0;
}
En exécutant le programme d'exemple ci-dessus, la sortie possible est la suivante :
Alarm set for 5 seconds Running... Running... Running... Running... Running... Caught signal 14: Alarm triggered
Le programme définit une alarme de 5 secondes, et lors de la capture,SIGALRMExécuter sur signalhandle_sigalrmle gestionnaire de signal affiche le message correspondant.
Explication
signal(SIGALRM, handle_sigalrm);: ParamètresSIGALRMle gestionnaire de signal esthandle_sigalrm。alarm(5);: définit une alarme, envoie après 5 secondesSIGALRMsignal.- Le programme entre dans une boucle infinie, imprimant une fois par seconde.
Running..., jusqu'à la capture duSIGALRMsignal, exécute le gestionnaire de signal et afficheCaught signal 14: Alarm triggered。
Notes
alarmL'alarme définie par la fonction enverra après le délai spécifié.SIGALRMsignal au processus appelant.- peut être fait en appelant à nouveau
alarmLa fonction passe également le paramètre 0 pour annuler une alarme précédemment programmée. - Les gestionnaires de signaux doivent être aussi courts et efficaces que possible, et n'effectuer que des opérations sûres.