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
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.
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:
- read,readx, readvou readvx (read, readx, read64x, readv, readvx, readad, ereadv, pread ou preadv Subroutine)
- write,writex, writevou writevx (write, writex, write64x, writev, writevx, ewrite, ewritev, pwrite ou pwritev Subroutine)
- ioctl ou ioctlx
- fcntl, lockfou flock
- wait, wait3ou waitpid (wait, waitpid, wait3, wait364et wait4 Sous-routine)
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);
Où 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 @ (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:
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 .handler(signal, Code, SCP) int signal, Code; struct sigcontext *SCP;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.
- SIG_DFL Action par défaut: action par défaut spécifique au signal.
- 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 . |