Syntaxe
ALARME INTES UNSIGNÉ (UNSIGNED INT SECONDES)La fonction est définie dans unistd.H En tête de fichier.
Arguments
La fonction prend un argument, secondes. Après secondes Des secondes se sont écoulées depuis que alarme() fonction, le Sigalrm Le signal est généré. Le comportement par défaut sur réception de Sigalrm est de terminer le processus. Mais, nous pouvons attraper et gérer le signal. Voir les détails de la gestion du signal.
Le alarme() La fonction renvoie une valeur non zéro, si une autre alarme a été précédemment définie et que la valeur est le nombre de secondes restantes pour l'alarme planifiée précédente en raison de la livraison. Sinon alarme() retournera zéro.
Exemple 1.C:
#inclureDans la capture d'écran de la sortie de Exemple 1.c, Le programme est exécuté à l'aide de la commande Time, afin que nous puissions obtenir un aperçu du temps d'exécution du programme. Nous avons observé que dans la fonction principale, nous appelons alarme() fonction, prévue pendant 2 secondes. Ainsi, pour Loop s'exécute, après 2 secondes, la fonction SIG_HANDLER est appelée et l'exécution de la fonction principale est interrompue. Après l'exécution de la fonction SIG_HANDLER, dans la fonction principale pour l'exécution de la boucle est reproduite. Ici, nous utilisons la fonction de sommeil pour retarder afin que nous puissions comprendre le flux de l'exécution. La boucle FOR est une boucle infinie, lorsque nous appuyons sur une touche d'interruption (Ctrl + C), l'exécution s'arrêtera.
Générateur Sigalrm en utilisant signal() La fonction ne peut pas être empilée. Seulement un Sigalrm La génération peut être programmée. Appels successifs de signal() fonction réinitialise le réveil du processus d'appel.
Exemple2.C:
#inclureDans la capture d'écran de la sortie de Exemple2.c, Nous pouvons voir que le programme a exécuté plus de 7 secondes, mais la première alarme qui était prévue après 4 secondes n'appelle pas la fonction de gestionnaire. La deuxième alarme qui était prévue après 1 seconde est réinitialisé l'alarme.
Si la valeur des secondes de l'argument est nulle, alors toute demande d'alarme précédemment faite est annulée.
Exemple3.C:
#inclureDans la capture d'écran de la sortie de Exemple3.c, Nous pouvons voir que la première alarme prévue après 2 secondes est annulée en raison de la deuxième alarme pendant 0 seconde.
Dans Exemple4.c Nous verrons à quel point nous pouvons constamment régler une alarme toutes les 2 secondes.
Exemple4.C:
#inclureDans la capture d'écran de la sortie de Exemple4.c, Nous pouvons voir que l'alarme est continue en toutes les 2 secondes. Nous réinitialisons l'alarme dans la fonction SIG_HANDLER.
Dans Exemple5.c Nous verrons comment nous pouvons retarder l'alarme déjà planifiée. Nous utiliserons le signal SIGINT pour l'interruption. Lorsque l'utilisateur type Ctrl + C dans le clavier, Sigint Le signal va générer.
Exemple5.C:
#inclureDans la capture d'écran de la sortie de Exemple5.c, Nous pouvons voir que lorsque l'utilisateur type Ctrl + C, l'alarme est réinitialisée 5 secondes. Dans ce programme, nous n'avons utilisé qu'une seule fonction de gestionnaire pour deux signaux différents, mais dans la fonction du gestionnaire, il a été vérifié que pour lequel le signal, la fonction de gestionnaire est appelée.
Conclusion:
Nous avons donc vu que la fonction d'alarme peut être définie pour le déclenchement du signal, comment réinitialiser l'alarme, comment annuler déjà l'alarme planifiée.