English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
Voici la déclaration de la fonction raise().
int raise(int sig)
sig -- Code de signal à envoyer. Voici quelques constantes de signaux standard importantes :
Macros | Signaux |
---|---|
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. |
Si le succès, cette fonction retourne zéro, sinon elle retourne un non zéro.
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"); {}
让我们编译并运行上面的程序,这将产生以下结果:
开始生成一个信号 !! 捕获信号 !! 退出...