English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutoriel de base C

Contrôle de flux C

Fonctions en C

Tableaux en C

Pointeurs en C

Chaines de caractères en C

Structure C

Fichier C

C d'autres

Manuel de référence du langage C

Utilisation et exemple de la fonction signal() de la bibliothèque C

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.

Déclaration

Voici la déclaration de la fonction signal().

void (*signal(int sig, void (*func)(int)))(int)

Paramètre

  • sig  -- Code de signal utilisé comme variable dans le gestionnaire de signal. Voici quelques constantes de signal standard importantes :

MacroSignal
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_DFLGestionnaire de signal par défaut.
SIG_IGNIgnorer le signal.

Valeur de retour

Cette fonction retourne la valeur du gestionnaire de signal avant son appel, et retourne SIG_ERR en cas d'erreur.

Exemple en ligne

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

Bibliothèque standard C - <signal.h>