C-Bibliotheksfunktion -alarm()

C-Standardbibliothek - <signal.h>

Beschreibung

alarmDie Funktion ist eine Funktion in der C-Standardbibliothek und wird verwendet, um nach einer angegebenen Zeit zu senden.SIGALRMSignal an den aufrufenden Prozess. Diese Funktion ist definiert in<unistd.h>In der Header-Datei.

Syntax

unsigned int alarm(unsigned int seconds);

Parameter

  • unsigned int seconds: gibt an, nach wie vielen Sekunden gesendet werden sollSIGALRMSignal. Wenn der Parameter 0 ist, wird ein zuvor gesetzter Alarm abgebrochen.

Rückgabewert

  • Bei Erfolg wird die verbleibende Zeit des zuvor gesetzten Alarms zurückgegeben (in Sekunden).
  • Wenn kein zuvor gesetzter Alarm vorhanden ist, wird 0 zurückgegeben.

Beispiel

Das Folgende ist ein Beispiel unter Verwendung vonalarmDie Funktion setzt einen Alarm und behandeltSIGALRMBeispielprogramm für das Signal. Das Programm sendet nach 5 SekundenSIGALRMSignal und führt den entsprechenden Signal-Handler aus, wenn das Signal abgefangen wird.

Beispiel

#include <stdio.h>
#include <signal.h>
#include <unistd.h>

// Signal-Handler
void handle_sigalrm(int sig) {
    printf("Signal %d empfangen: Alarm ausgelöst\n", sig);
}

int main() {
    // Signal-Handler für SIGALRM festlegen
    signal(SIGALRM, handle_sigalrm);

    // Einen Alarm setzen, um das SIGALRM-Signal nach 5 Sekunden auszulösen
    alarm(5);
    printf("Alarm für 5 Sekunden gesetzt\n");

    // Endlosschleife, die auf ein Signal wartet
    while (1) {
        printf("Läuft...\n");
        sleep(1);
    }

    return 0;
}

Beim Ausführen des obigen Beispielprogramms sieht die mögliche Ausgabe wie folgt aus:

Alarm set for 5 seconds
Running...
Running...
Running...
Running...
Running...
Caught signal 14: Alarm triggered

Das Programm setzt einen 5-Sekunden-Alarm, und beim Abfangen,SIGALRMBei Signal ausführenhandle_sigalrmgibt der Signal-Handler die entsprechende Nachricht aus.

Erklärung

  • signal(SIGALRM, handle_sigalrm);: EinstellungenSIGALRMder Signal-Handler isthandle_sigalrm。
  • alarm(5);: setzt einen Alarm, sendet nach 5 SekundenSIGALRMSignal.
  • Das Programm geht in eine Endlosschleife und gibt einmal pro Sekunde aus.Running..., bis zum AbfangenSIGALRMSignal, führt den Signal-Handler aus und gibt ausCaught signal 14: Alarm triggered。

Hinweise

  • alarmDer von der Funktion gesetzte Alarm sendet nach der angegebenen Zeit.SIGALRMSignal an den aufrufenden Prozess.
  • kann durch erneutes Aufrufen erfolgenalarmDie Funktion übergibt außerdem Parameter 0, um einen zuvor gesetzten Alarm abzubrechen.
  • Signalhandler sollten so kurz und effizient wie möglich sein und nur sichere Operationen ausführen.

C-Standardbibliothek - <signal.h>

Weitere Erweiterungen