English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Bibliothèque standard C - <signal.h>
Fonction de bibliothèque C void (*signal(int sig, void (*func)(int)))(int) Définir une fonction pour gérer le signal, c'est-à-dire avec sig Gestionnaire de signal des paramètres.
Voici la déclaration de la fonction signal().
void (*signal(int sig, void (*func)(int)))(int)
sig -- Code de signal utilisé comme variable dans le gestionnaire de signal. Voici quelques constantes de signal standard importantes :
Macro | Signal |
---|---|
SIGABRT | (Signal Abort) Arrêt anormal du programme. |
SIGFPE | (Signal Floating-(Point Exception) Erreur dans les opérations arithmétiques, comme un dividende nul ou un dépassement (ce n'est pas nécessairement une opération en virgule flottante). |
SIGILL | (Signal Illegal Instruction) Image de fonction illégale, comme une instruction illégale, généralement due à une variante dans le code ou à une tentative d'exécuter des données. |
SIGINT | (Signal Interrupt) Signal d'interruption, comme ctrl-C, généralement généré par l'utilisateur. |
SIGSEGV | (Signal Segmentation Violation) Accès illégal à la mémoire, comme l'accès à une unité de mémoire inexistante. |
SIGTERM | (Signal Terminate) Demande de terminaison du programme en cours. |
func -- Un pointeur vers une fonction. Il peut s'agir d'une fonction définie par le programme ou l'une des fonctions prédéfinies suivantes :
SIG_DFL | Gestionnaire de signal par défaut. |
SIG_IGN | Ignorer le signal. |
Cette fonction retourne la valeur du gestionnaire de signal avant son appel, et retourne SIG_ERR en cas d'erreur.
Le siguiente ejemplo muestra el uso de la función signal().
#include <stdio.h> #include <unistd.h> #include <stdlib.h> #include <signal.h> void sighandler(int); int main() { signal(SIGINT, sighandler); while(1) { printf("Commencer le sommeil d'une seconde...\n"); sleep(1); } return(0); } void sighandler(int signum) { printf("Capturer le signal %d, sortir...\n", signum); exit("}}1); }
Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant, et le programme entrera dans une boucle infinie, utilisez CTRL + Sortir du programme avec la touche C.
Commencer à dormir une seconde... Commencer à dormir une seconde... Commencer à dormir une seconde... Commencer à dormir une seconde... Commencer à dormir une seconde... Capturer des signaux 2,sortir...