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

Tutoriel de base du langage C

Contrôle de flux du langage C

C 语言函数

C 语言数组

C 语言指针

C 语言字符串

Structure de langage C

Fichier de langage C

Autres C

Manuel de référence du langage C

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

C 标准库 - <signal.h>

Fonction de bibliothèque C int raise(int sig) Il entraînera la génération de signaux sig.sig Paramètres compatibles avec les macros SIG.

Déclaration

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

int raise(int sig)

Paramètres

  • sig  -- Code de signal à envoyer. Voici quelques constantes de signaux standard importantes :

MacrosSignaux
SIGABRT(Signal d'abandon) Arrêt anormal du programme.
SIGFPE(Signal de virgule flottante)-(Exception de point) Erreur de calcul arithmétique, comme un diviseur nul ou un débordement (ce n'est pas nécessairement une opération en virgule flottante).
SIGILL(Signal d'instruction illégale) 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 d'interruption) Signal d'interruption, comme ctrl-C, généralement généré par l'utilisateur.
SIGSEGV(Signal de violation de segmentation) Accès illégal à la mémoire, comme l'accès à une unité de mémoire non existante.
SIGTERM(Signal de terminaison) Demande de terminaison envoyée au programme.

Valeur de retour

Si le succès, cette fonction retourne zéro, sinon elle retourne un non zéro.

Exemple en ligne

Le présent exemple démontre l'utilisation de la fonction raise().

#include <signal.h>
#include <stdio.h>
void signal_catchfunc(int);
int main()
{
    int ret;
   ret = signal(SIGINT, signal_catchfunc);
   if( ret == SIG_ERR) 
   {
      printf("Erreur : Impossible de définir le gestionnaire de signal.\n");
      exit(0);
   {}
   printf("Début de la génération d'un signal\n");
   ret = raise(SIGINT);
   if( ret !=0 ) 
   {
      printf("Erreur : Impossible de générer le signal SIGINT.\n");
      exit(0);
   {}
   printf("Sortie...\n");
   return(0);
{}
void signal_catchfunc(int signal) {}
{
   printf("!! 捕获信号 !!\n");
{}

让我们编译并运行上面的程序,这将产生以下结果:

开始生成一个信号
!! 捕获信号 !!
退出...

C 标准库 - <signal.h>