sigaction, sigvec ou sous-routine de signal

Objectif

Indique l'action à effectuer lors de la distribution d'un signal.

Bibliothèques

Article Descriptif
sigaction Bibliothèque C standard (libc.a)
signal, sigvec Bibliothèque C standard (libc.a) ;

Bibliothèque de compatibilité Berkeley (libbsd.a)

Syntaxe

#include <signal.h>

int sigaction ( signal,  action,  oaction)
int signal;
struct sigaction *action, *oaction;

int sigvec (signal,  invec,  outvec)
int signal;
struct sigvec *invec, *outvec;

void (*signal (signal, action)) ()
int signal;
void (*action) (int);

Descriptif

La sous-routine sigaction permet à un processus appelant d'examiner et de modifier l'action à effectuer lorsqu'un signal spécifique est envoyé au processus émettant cette sous-routine.

Dans les applications à unités d'exécution multiples utilisant la bibliothèque d'unités d'exécution (libpthreads.a), les actions de signal sont communes à toutes les unités d'exécution du processus. Toute unité d'exécution appelant la sous-routine sigaction modifie l'action à effectuer lorsqu'un signal spécifique est envoyé au processus d'unité d'exécution, c'est-à-dire à toute unité d'exécution du processus.

Remarque: La sous-routine sigaction ne doit pas être utilisée simultanément avec la sous-routine sigwait sur le même signal.

Le paramètre signal indique le signal. Si le paramètre action n'est pas null, il pointe vers une structure sigaction qui décrit l'action à effectuer à la réception du signal du paramètre signal . Si le paramètre oaction n'est pas null, il pointe vers une structure sigaction dans laquelle les données d'action de signal en vigueur au moment de l'appel de la sous-routine sigaction sont renvoyées. Si le paramètre action est null, le traitement du signal est inchangé ; par conséquent, l'appel peut être utilisé pour demander le traitement en cours d'un signal donné.

La structure sigaction comporte les zones suivantes:

Type de membre Nom de membre Descriptif
void (*) (int) sa_handler SIG_DFL, SIG_IGN ou pointeur vers une fonction.
sigset_t masque_sae Ensemble supplémentaire de signaux à bloquer lors de l'exécution de la fonction d'accrochage de signaux.
int sa_flags Drapeaux spéciaux pour affecter le comportement du signal.
void (*) (int, siginfo_t *, void *) sa_sigaction Fonction d'interception de signal.

:NONE.sa_handlerpeut avoir une valeur SIG_DFL ou SIG_IGN , ou peut être un pointeur vers une fonction. Une valeur SIG_DFL demande qu'une action par défaut soit effectuée lorsqu'un signal est distribué. La valeur SIG_IGN demande que le signal n'ait aucun effet sur le processus de réception. Un pointeur vers une fonction demande que le signal soit intercepté, c'est-à-dire que le signal provoque l'appel de la fonction. Ces actions sont décrites plus en détail dans "Paramètres".

Lorsqu'un signal est délivré à une unité d'exécution, si l'action de ce signal indique une fin, un arrêt ou une poursuite, l'ensemble du processus est arrêté, arrêté ou poursuivi, respectivement.

Si l'indicateur SA_SIGINFO (voir ci-dessous) est effacé dans lesa_flagszone de la structure sigaction , lasa_handleridentifie l'action à associer au signal spécifié. Si l'indicateur SA_SIGINFO est défini dans lesa_flags, la zonesa_sigactionindique une fonction d'interception de signal. Si le bit SA_SIGINFO est effacé et quesa_handlerindique une fonction d'interception de signal, ou si le bit SA_SIGINFO est défini, lesa_maskidentifie un ensemble de signaux qui seront ajoutés au masque de signal de l'unité d'exécution avant que la fonction d'interception de signal ne soit appelée.

:NONE.sa_maskpeut être utilisé pour spécifier que les signaux individuels, en plus de ceux du masque de signal de processus, ne peuvent pas être délivrés alors que la fonction de gestionnaire de signaux spécifiée dans lasa_handlerest en fonctionnement. :NONE.sa_flagsLes bits SA_ONSTACK, SA_OLDSTYLEou SA_NOCLDSTOP peuvent être définis pour spécifier un contrôle supplémentaire sur les actions effectuées lors de la distribution d'un signal.

Si le bit SA_ONSTACK est défini, le système exécute la fonction d'interception de signal sur la pile de signaux spécifiée par la sous-routine sigstack . Si ce bit n'est pas réglé, la fonction s'exécute sur la pile du processus auquel le signal est délivré.

Si le bit SA_OLDSTYLE est défini, l'action de signal est définie sur le libellé SIG_DFL avant l'appel de la fonction d'interception de signal. Ceci est pris en charge pour la compatibilité avec les anciennes applications, et n'est pas recommandé car le même signal peut se reproduire avant que le sous-programme d'interception de signal puisse réinitialiser l'action du signal et que l'action par défaut (normalement la terminaison) soit prise dans ce cas.

Si un signal pour lequel une fonction d'interception de signal existe est envoyé à un processus alors que ce processus exécute certaines sous-routines, l'appel peut être redémarré si le bit SA_RESTART est défini pour chaque signal. Les seules sous-routines affectées sont les suivantes:

Les autres sous-routines ne redémarrent pas et ne renvoient pas le libellé EINTR , indépendamment de la valeur du bit SA_RESTART .

Si SA_SIGINFO est effacé et que le signal est intercepté, la fonction d'interception de signal est entrée comme suit:void func(int signo);

signo est le seul argument de la fonction d'interception de signal. Dans ce cas, le membre sa_handler doit être utilisé pour décrire la fonction d'interception de signal et l'application ne doit pas modifier le membre sa_sigaction . Si SA_SIGINFO est défini et que le signal est intercepté, la fonction d'interception de signal sera entrée comme suit:void func(int signo, siginfo_t * info, void * context);où deux arguments supplémentaires sont transmis à la fonction d'interception du signal.

Le second argument pointe vers un objet de type siginfo_t expliquant la raison pour laquelle le signal a été généré. Le troisième argument peut être transtypé en un pointeur vers un objet de type ucontext_t pour faire référence au contexte du processus de réception qui a été interrompu lors de la distribution du signal. Dans ce cas, le membre sa_sigaction doit être utilisé pour décrire la fonction d'interception de signal et l'application ne doit pas modifier le membre sa_handler .

Le membre si_signo contient le numéro de signal généré par le système. Le membre si_errno peut contenir des informations d'erreur supplémentaires liées à l'implémentation. S'il est différent de zéro, il contient un numéro d'erreur identifiant la condition à l'origine de la génération du signal. Le membre si_code contient un code identifiant la cause du signal. Si la valeur de si_code est inférieure ou égale à 0, le signal a été généré par un processus et si_pid et si_uid indiquent respectivement l'ID de processus et l'ID utilisateur réel de l'expéditeur.

La description de l'en-tête signal.h contient des informations sur le contenu spécifique du signal des éléments du type siginfo_t . Si SA_NOCLDWAIT est défini et que sig est SIGCHLD, les processus enfant des processus appelants ne seront pas transformés en processus zombie lorsqu'ils s'arrêteront. Si le processus appelant attend par la suite ses enfants et que le processus n'a pas d'attente pour les enfants qui ont été transformés en processus zombie, il se bloque jusqu'à ce que tous ses enfants s'arrêtent et wait, wait3, waitid et waitpid échouent et définit errno sur ECHILD. Sinon, l'arrêt des processus enfant sera transformé en processus zombie, sauf si SIGCHLD est défini sur SIG_IGN. Lorsque SIGCHLD est défini sur SIG_IGN, le signal est ignoré et tous les enfants zombies du processus sont nettoyés.

Si SA_RESETHAND est défini, la disposition du signal est réinitialisée sur SIG_DFL et l'indicateur SA_SIGINFO est effacé lors de l'entrée dans le gestionnaire de signaux.

Si SA_NODEFER est défini et que sig est intercepté, sig ne sera pas ajouté au masque de signal du processus lors de l'entrée dans le gestionnaire de signaux, sauf s'il est inclus dans sa_mask. Sinon, sig sera toujours ajouté au masque de signal du processus lors de l'entrée dans le gestionnaire de signaux. Si sig est SIGCHLD, que l'indicateur SA_NOCLDSTOP n'est pas défini dans sa_flags et que l'implémentation prend en charge le signal SIGCHLD, un signal SIGCHLD est généré pour le processus appelant chaque fois que l'un de ses processus enfant s'arrête.

Si sig est SIGCHLD et que l'indicateur SA_NOCLDSTOP est défini dans sa_flags, l'implémentation ne génère pas de signal SIGCHLD de cette manière. Lorsqu'un signal est intercepté par une fonction d'interception de signal installée par sigaction, un nouveau masque de signal est calculé et installé pour la durée de la fonction d'interception de signal (ou jusqu'à ce qu'un appel à sigprocmask orsigsuspend soit effectué).

Ce masque est formé en prenant l'union du masque de signal en cours et de la valeur de sa_mask pour le signal en cours de distribution, sauf si SA_NODEFER ou SA_RESETHAND est défini, et en incluant le signal en cours de distribution. Si le gestionnaire de signaux de l'utilisateur revient normalement, le masque de signal d'origine est restauré.

Une fois qu'une action est installée pour un signal spécifique, elle reste installée jusqu'à ce qu'une autre action soit explicitement demandée (par un autre appel à sigaction), jusqu'à ce que l'indicateur SA_RESETHAND entraîne la réinitialisation du gestionnaire ou jusqu'à ce que l'une des fonctions exec soit appelée.

Si l'action précédente de sig a été établie par signal, les valeurs des zones renvoyées dans la structure indiquée par oact ne sont pas spécifiées, et en particulier oact-> sa_handler n'est pas nécessairement la même valeur transmise à signal.

Toutefois, si un pointeur vers la même structure ou une copie de celle-ci est transmis à un appel ultérieur à sigaction via l'argument act , le traitement du signal sera comme si l'appel d'origine à signal était répété.

Si sigaction échoue, aucun nouveau gestionnaire de signaux n'est installé. Il n'est pas spécifié si une tentative de définition de l'action pour un signal qui ne peut pas être intercepté ou ignoré sur SIG_DFL est ignorée ou entraîne le renvoi d'une erreur avec errno défini sur EINVAL.

Si SA_SIGINFO n'est pas défini dans sa_flags, la disposition des occurrences suivantes de sig lorsqu'elle est déjà en attente dépend de l'implémentation. La fonction d'interception de signal est appelée avec un seul argument.

Les sous-routines sigvec et signal sont fournies à des fins de compatibilité avec les systèmes d'exploitation plus anciens. Leur fonction est un sous-ensemble de celle disponible avec sigaction.

La sous-routine sigvec utilise la structure sigvec à la place de la structure sigaction . La structure sigvec spécifie un masque en tant queintau lieu d'unsigset_t. Le masque de la sous-routine sigvec est construit en définissanti-thbit dans le masque si le signal i doit être bloqué. Par conséquent, le sous-programme sigvec permet uniquement de bloquer les signaux compris entre les valeurs de 1 et 31 lorsqu'une fonction de traitement des signaux est appelée. Les autres signaux ne sont pas bloqués par le masque de gestion des signaux.

La structure sigvec comporte les membres suivants:

int  (*sv_handler)();
/* signal handler */
int  sv_mask;
/* signal mask    */
int  sv_flags;
/* flags          */

La sous-routine sigvec de la bibliothèque libbsd.a interprète l'indicateur SV_INTERRUPT et l'inverse de l'indicateur SA_RESTART de la sous-routine sigaction . La sous-routine sigvec de la bibliothèque libc.a définit toujours l'indicateur SV_INTERRUPT indépendamment de ce qui a été transmis dans la structure sigvec .

La sous-routine signal de la bibliothèque libc.a permet d'associer une action à un signal. Le paramètre action peut avoir les mêmes valeurs que celles décrites pour le paramètresv_handlerdans la structure sigaction de la sous-routinesigaction . Toutefois, aucun masque ou indicateur de gestionnaire de signaux ne peut être spécifié ; la sous-routine signal définit implicitement le masque de gestionnaire de signaux sur des signaux supplémentaires et les indicateurs sur SA_OLDSTYLE.

Lorsque l'exécution d'un appel signal aboutit, la valeur de l'action de signal précédente est renvoyée. Si l'appel échoue, la valeur -1 est renvoyée et la variable globale errno est définie pour indiquer l'erreur comme dans l'appel sigaction.

Le signal dans libc.a ne définit pas l'indicateur SA_RESTART . Il définit le masque de signal sur le signal dont l'action est spécifiée et définit les indicateurs sur SA_OLDSTYLE. La version BSD (Berkeley Software Distribution) de signal définit l'indicateur SA_RESTART et conserve les paramètres actuels du masque de signal et des indicateurs. La version BSD peut être utilisée en compilant avec la bibliothèque de compatibilité Berkeley (libbsd.a).

Paramètres

SIGNAL
Définit le signal. La liste suivante décrit les noms des signaux et leur spécification. La valeur du paramètre signal peut être n'importe quel nom de signal de cette liste ou son numéro correspondant, à l'exception du nom SIGKILL . Si vous utilisez le nom du signal, vous devez inclure le fichier signal.h , car le nom est corrélé dans le fichier avec son numéro correspondant.
Remarque: Les symboles de la liste de signaux suivante représentent ces actions:
*
Indique l'action par défaut qui inclut la création d'un fichier de vidage principal.
@
Indique l'action par défaut qui arrête le processus recevant ces signaux.
!
Indique l'action par défaut qui redémarre ou continue le processus qui reçoit ces signaux.
+
Indique l'action par défaut qui ignore ces signaux.
%
Indique un manque probable d'espace de pagination.
#
Pour plus d'informations sur l'utilisation de ces signaux, voir Terminal Programming .
Réservé
(26)
Réservé
(37-58)
SIGALRM
Réveil. (14)
SIGBUS
Exception de spécification. (10*)
SIGCHLD
Vers le parent lors de l'arrêt ou de la sortie de l'enfant. (20+)
SIGCONT
Continuez si vous êtes arrêté. (19!)
SIGDANGER
Espace de pagination faible. (33+%)
SIGEMT
Instruction EMT. (7*)
SIGFPE
Exception arithmétique, entier divisé par 0 ou exception à virgule flottante. (8*)
SIGHUP
Raccrochez-vous. (1)
SIGILL (SIGILL)
Instruction non valide (non réinitialisée lors de l'interception). (4*)
SIGINT
Interruption. (2)
SIGIO
Entrée / sortie possible ou terminée. (23+)
SIGGRANT
L'accès au moniteur est souhaité. (60#)
SIGMIGRATE
Processus de migration. (35)
SIGMSG
Les données d'entrée ont été stockées dans la mémoire tampon de l'anneau d'entrée. (27#)
SIGPRE
Exception de programmation (définie par l'utilisateur). (36)
SIGPROF
Délai de profilage expiré. (voir la sous-routine setitimer ). (32)
SIGPWR
Redémarrage après échec de la mise sous tension. (29+)
SIGQUIT
Quittez. (3*)
SIGIOT
Arrêtez le processus (voir la sous-routine abort ). (6*)
SIGKILL
Kill (ne peut pas être intercepté ou ignoré). (9)
SIGPIPE
Ecrire sur un canal de communication lorsqu'il n'y a pas de processus pour le lire. (13)
SIGRETRACT
L'accès au moniteur doit être abandonné. (61#)
SIGSAK
Clé d'attention sécurisée. (63)
SIGSEGV
Violation de segmentation. (11*)
SIGSOUND
Une commande de son a été exécutée. (62#)
SIGSTOP
Arrêter (ne peut pas être intercepté ou ignoré). (17@)
SIGSYS
Paramètre incorrect pour la sous-routine. (12*)
SIGTALRM
Réveil d'unité d'exécution. (38)
SIGTERM
Signal de fin de logiciel. (15)
SIGTRAP
Alerte de trace (non réinitialisée lorsqu'elle est interceptée). (5*)
SIGTSTP
Arrêt interactif. (18@)
SIGTTIN
Tentative de lecture de l'arrière-plan à partir du terminal de contrôle. (21@)
SIGTTOU
Tentative d'écriture en arrière-plan à partir du terminal de contrôle. (22@)
SIGURG
Condition urgente sur le canal d'entrée-sortie. (16+)
SIGUSR1
Signal défini par l'utilisateur 1. (30)
SIGUSR2
Signal 2 défini par l'utilisateur. (31)
SIGVTALRM
Alarme de temps virtuel (voir la sous-routine setitimer ). (34)
SIGWINCH
Modification de la taille de la fenêtre. (28+)
SIGXCPU
Limite de temps UC dépassée (voir la sous-routine setrlimit ). (24)
SIGXFSZ
Limite de taille de fichier dépassée (voir la sous-routine setrlimit ). (25)
 
 
action
Pointe vers une structure sigaction qui décrit l'action à effectuer à la réception du signal de paramètre signal .

Les trois types d'action pouvant être associés à un signal (SIG_DFL, SIG_IGNou un pointeur vers une fonction) sont décrits comme suit:

  • SIG_DFL Action par défaut: action par défaut spécifique au signal.

    A l'exception des numéros de signal marqués d'un signe + (signe plus), @ (arobase) ou ! (point d'exclamation), l'action par défaut d'un signal met fin au processus de réception avec toutes les conséquences décrites dans la sous-routine _exit . En outre, un fichier image mémoire est créé dans le répertoire en cours du processus de réception si un astérisque apparaît avec un paramètre signal et que les conditions suivantes sont remplies:

    • Tous les coeurs vidés se trouvent dans le contexte du processus en cours d'exécution. Ils sont vidés avec un propriétaire et un groupe correspondant à l'ID utilisateur effectif (UID) et à l'ID groupe (GID) du processus. Si cette paire UID/GID n'est pas autorisée à écrire dans le répertoire cible déterminé en fonction des procédures de chemin de base standard, aucun fichier de base n'est vidé.
    • Si l'ID utilisateur réel (RUID) est root, le fichier core est vidé, avec le mode 0600.
    • Si l'ID utilisateur effectif (EUID) correspond à l'ID utilisateur réel (RUID) et que l'ID groupe effectif (EGID) correspond à n'importe quel groupe de la liste de groupes des données d'identification, le fichier core est vidé avec les droits d'accès 0600.
    • Si l'EUID correspond à l'ID règle, mais que l'EGID ne correspond à aucun groupe de la liste de groupes des données d'identification, le fichier core ne peut pas être vidé. L'utilisateur effectif ne peut pas voir les données auxquelles il n'a pas accès.
    • Si l'EUID ne correspond pas au RUID, le fichier core peut être vidé uniquement si vous avez défini un répertoire principal à l'aide de la commande syscorepath . Cela permet d'éviter que le fichier core ne soit déchargé dans le répertoire de travail en cours ou dans un répertoire core spécifique à l'utilisateur de sorte que vous ne puissiez pas supprimer le fichier core. Core est vidé avec le mode 0600. Si vous n'avez pas utilisé la commande syscorepath pour définir un répertoire principal, aucun répertoire principal n'est vidé.
    Pour les numéros de signal marqués d'un ! (point d'exclamation), l'action par défaut redémarre le processus de réception s'il s'est arrêté ou continue d'exécuter le processus de réception.

    Pour les numéros de signal marqués d'un @ (arobase), l'action par défaut arrête temporairement l'exécution du processus de réception. Lorsqu'un processus s'arrête, un signal SIGCHLD est envoyé à son processus parent, sauf si le processus parent a défini le bit SA_NOCLDSTOP . Lorsqu'un processus s'est arrêté, les signaux supplémentaires envoyés ne sont pas distribués tant que le processus n'est pas redémarré. Une exception à cette règle est le signal SIGKILL , qui met toujours fin au processus de réception. Une autre exception est le signal SIGCONT , qui entraîne toujours le redémarrage ou la poursuite de l'exécution du processus de réception. Un processus dont le processus parent est terminé reçoit un signal SIGKILL si les signaux SIGTSTP, SIGTTINou SIGTTOU sont générés pour ce processus.

    Pour les numéros de signal marqués d'un signe +, l'action par défaut ignore le signal. Dans ce cas, la délivrance d'un signal n'affecte pas le processus de réception.

    Si une action de signal est définie sur SIG_DFL alors que le signal est en attente, le signal reste en attente.

  • SIG_IGN Ignorer le signal.

    La délivrance du signal n'affecte pas le processus de réception. Si une action de signal est définie sur l'action SIG_IGN alors que le signal est en attente, le signal en attente est supprimé.

    Une exception à cette règle est le signal SIGCHLD dont l'action SIG_DFL ignore le signal. Si l'action du signal SIGCHLD est définie sur SIG_IGN, les processus enfant des processus appelant ne seront pas transformés en processus zombie lorsqu'ils se terminent. Si le processus appelant attend ensuite ses enfants et que le processus n'a pas d'attente pour les enfants qui ont été transformés en processus zombie, il se bloque jusqu'à ce que tous ses enfants s'arrêtent et wait, wait3, waitid et waitpid échoueront et définiront errno sur ECHILD.

    Remarque: Les signaux SIGKILL et SIGSTOP ne peuvent pas être ignorés.
  • Pointeur vers une fonction, signal d'interception.

    Lors de la délivrance du signal, le processus de réception exécute la fonction d'accrochage de signal spécifiée par le pointeur à la fonction. La sous-routine du gestionnaire de signaux peut être déclarée comme suit:

    handler(signal, Code, SCP)
    int signal, Code;
    struct sigcontext *SCP;
    Le paramètre signal est le numéro du signal. Le paramètre Code n'est fourni que pour des raisons de compatibilité avec d'autres systèmes compatibles UNIX. La valeur du paramètre Code est toujours 0. Le paramètre SCP pointe vers la structure sigcontext qui est ensuite utilisée pour restaurer le contexte d'exécution précédent du processus. La structure sigcontext est définie dans le fichier signal.h .

    Un nouveau masque de signal est calculé et installé pour la durée de la fonction d'interception de signal (ou jusqu'à ce que la sous-routine sigprocmask ousigsuspend soit créée). Ce masque est formé en joignant le masque de signal de processus (le masque associé à l'action pour le signal délivré) et le masque correspondent au signal délivré. Le masque associé à la fonction d'interception de signal n'est pas autorisé à bloquer les signaux qui ne peuvent pas être ignorés. Ceci est appliqué par le noyau sans qu'une erreur ne soit indiquée. Si et lorsque la fonction d'interception de signal est renvoyée, le masque de signal d'origine est restauré (modifié par les appels sigprocmask effectués depuis l'appel de la fonction d'interception de signal) et le processus de réception reprend l'exécution au point où il a été interrompu.

    La fonction d'interception de signal peut entraîner la reprise du processus dans un contexte différent en appelant la sous-routine longjmp . Lorsque la sous-routine longjmp est appelée, le processus quitte la pile de signaux, si elle se trouve actuellement sur la pile, et restaure le masque de signal du processus à l'état où la sous-routine setjmp correspondante a été effectuée.

    Une fois qu'une action est installée pour un signal spécifique, elle reste installée jusqu'à ce qu'une autre action soit explicitement demandée (par un autre appel à la sous-routine sigaction ) ou jusqu'à ce que l'une des sous-routines exec soit appelée. Il existe une exception à cette règle lorsque le bit SA_OLDSTYLE est défini. Dans ce cas, l'action d'un signal intercepté est définie sur l'action SIG_DFL avant que la fonction d'interception de ce signal ne soit appelée.

    Si une action de signal est mise à un pointeur sur une fonction alors que le signal est en attente, le signal reste en attente.

    Le gestionnaire de signaux ne doit pas attendre directement ou indirectement sur l'entrée d'une unité d'exécution différente sous la forme d'une variable, d'un canal ou de tout autre élément similaire. Cela provoquera un interblocage dans le cas d'une application à unités d'exécution multiples. Comme il s'agit d'un interblocage lancé par le programmeur, l'application ne le traitera pas.

    Lorsque des fonctions d'interception de signal sont appelées de manière asynchrone avec l'exécution de processus, le comportement de certaines des fonctions définies par cette norme n'est pas spécifié si elles sont appelées à partir d'une fonction d'interception de signal. L'ensemble de fonctions suivant est réentrant par rapport aux signaux ; c'est-à-dire que les applications peuvent les invoquer, sans restriction, à partir de fonctions d'interception de signaux:

    sortie
    access
    Alarme
    cfgetispeed
    cfgetospeed
    cfsetispeed
    cfsetospeed
    chdir
    chmod
    Chown
    fermer
    création
    dupliqué
    dup2
    recouvrir
    exéc
    exec
    fcntl
    dévier
    fpathconf
    fstat
    getegid
    geteuid
    getgid
    getgroups
    getpgrp
    ID processus (getpid)
    ID processus (getppid)
    ID utilisateur
    KILL
    liaison
    lseek
    mkdir
    mkfifo
    Ouvrir
    confchemin
    suspendre
    canal de communication
    Propagation
    pwrite
    mettre au premier plan
    read
    readx
    changement de nom
    rmdir
    bit ID groupe
    Setpgid
    setpgrp
    setid
    bit ID utilisateur
    sigaction
    sigaddset
    sigdelset
    ensemble de sigemptys
    membre de signature
    SIGNAL
    en attente de signature
    masque de processus de signature
    sigsuspension
    mise en veille
    stat
    statx
    sysconf
    tcdrain
    fluxtc
    tcflush
    tcgetattr
    tcgetpgrp
    tcsendbreak
    tcsetattr
    tcsetpgrp
    time
    times
    umask
    uname
    supprimer le lien
    ustat
    utime
    wait
    ID_attente
    écriture

    Toutes les autres sous-routines ne doivent pas être appelées à partir de fonctions d'interception de signal car leur comportement n'est pas défini.

 
oaction
Pointe vers une structure sigaction dans laquelle les données d'action de signal en vigueur au moment de la sous-routine sigaction sont renvoyées.
invec
Pointe vers une structure sigvec qui décrit l'action à effectuer à la réception du signal de paramètre signal .
sortie
Pointe vers une structure sigvec dans laquelle les données d'action du signal en vigueur au moment de la sous-routine sigvec sont renvoyées.
action
Indique l'action associée à un signal.

Valeurs renvoyées

Une fois terminée, la sous-routine sigaction renvoie la valeur 0. Sinon, la valeur SIG_ERR est renvoyée et la variable globale errno est définie pour indiquer l'erreur.

Codes d'erreur

La sous-routine sigaction échoue et aucun nouveau gestionnaire de signaux n'est installé si l'un des cas suivants se produit:

Article Descriptif
EFAULT Le paramètre action ou oaction pointe vers un emplacement en dehors de l'espace adresse alloué du processus.
EINVAL Le paramètre signal n'est pas un numéro de signal valide.
EINVAL Une tentative a été effectuée pour ignorer ou fournir un gestionnaire pour les signauxSIGKILL, SIGSTOPet SIGCONT .