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 <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 erfolgen
alarmDie 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.