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 <stdio.h>
#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 à nouveaualarmLa 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.

Bibliothèque standard C - <signal.h>

autres extensions