.\" -*- coding: UTF-8 -*- .\" Copyright (c) 2000 Andries Brouwer .\" and Copyright (c) 2007 Michael Kerrisk .\" and Copyright (c) 2008, Linux Foundation, written by Michael Kerrisk .\" .\" based on work by Rik Faith .\" and Mike Battersby . .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified 2004-11-19, mtk: .\" added pointer to sigaction.2 for details of ignoring SIGCHLD .\" 2007-06-03, mtk: strengthened portability warning, and rewrote .\" various sections. .\" 2008-07-11, mtk: rewrote and expanded portability discussion. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH signal 2 "30 mars 2023" "Pages du manuel de Linux 6.05.01" .SH NOM signal \- Gestion de signaux ANSI C .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBtypedef void (*sighandler_t)(int);\fP .PP \fBsighandler_t signal(int \fP\fIsignum\fP\fB, sighandler_t \fP\fIhandler\fP\fB);\fP .fi .SH DESCRIPTION \fBAVERTISSEMENT\fP\ : Le comportement de \fBsignal\fP() varie selon les versions d'UNIX, et a aussi varié au cours du temps dans les différentes versions de Linux. \fBÉvitez de l'utiliser\fP\ : utilisez plutôt \fBsigaction\fP(2). Consultez la section \fIPortabilité\fP plus bas. .PP \fBsignal\fP() installe le gestionnaire \fIhandler\fP pour le signal \fIsignum\fP. \fIhandler\fP peut être \fBSIG_IGN\fP, \fBSIG_DFL\fP ou l'adresse d'une fonction définie par le programmeur (un «\ gestionnaire de signal\ »). .PP Lors de l'arrivée d'un signal correspondant au numéro \fIsignum\fP, l'un des événements suivants se produit\ : .TP 3 * Si le gestionnaire vaut \fBSIG_IGN\fP, le signal est ignoré. .TP * Si le gestionnaire est \fBSIG_DFL\fP, l'action par défaut associée à ce signal est entreprise (consultez \fBsignal\fP(7)). .TP * Si le gestionnaire est une fonction, alors tout d'abord le gestionnaire est reconfiguré à \fBSIG_DFL\fP, ou le signal est bloqué (voir la section \fIPortabilité\fP ci\(hydessous), puis \fIhandler\fP est appelée avec l'argument \fIsignum\fP. Si l'invocation du gestionnaire a bloqué le signal, le signal est débloqué au retour du gestionnaire. .PP Les signaux \fBSIGKILL\fP et \fBSIGSTOP\fP ne peuvent être ni ignorés, ni interceptés. .SH "VALEUR RENVOYÉE" \fBsignal\fP() renvoie la valeur précédente du gestionnaire de signaux. En cas d'erreur, il renvoie \fBSIG_ERR\fPs et \fIerrno\fP est positionné pour indiquer l'erreur. .SH ERREURS .TP \fBEINVAL\fP \fIsignum\fP est invalide. .SH VERSIONS .\" libc4 and libc5 define .\" .IR SignalHandler ; L'utilisation du type \fIsighandler_t\fP est une extension GNU, exposée si \fB_GNU_SOURCE\fP est définie. La glibc définit aussi \fIsig_t\fP (dérivé de BSD) si \fB_BSD_SOURCE\fP (dans la glibc 2.19 ou les précédentes) ou \fB_DEFAULT_SOURCE\fP (dans la glibc 2.19 et les suivantes) est définie. Sans cette définition de ce type, la déclaration de \fBsignal\fP() est un peu plus difficile à lire\ : .PP .in +4n .EX \fBvoid ( *\fP\fIsignal\fP\fB(int \fP\fIsignum\fP\fB, void (*\fP\fIhandler\fP\fB)(int)) ) (int);\fP .EE .in .SS Portabilité La seule utilisation portable de \fBsignal\fP() est de de configurer le gestionnaire du signal à \fBSIG_DFL\fP ou \fBSIG_IGN\fP. La sémantique associée à l'utilisation de \fBsignal\fP() pour définir un gestionnaire de signal dépend suivant les systèmes (et POSIX.1 autorise explicitement ces écarts)\ ; \fBne l'utiliser pas pour cela.\fP .PP POSIX.1 a résolu ce problème de portabilité est spécifiant \fBsigaction\fP(2), qui fournit un contrôle explicite de la sémantique quand un gestionnaire de signal est appelé\ ; utilisez cette interface plutôt que \fBsignal\fP(). .SH STANDARDS C11, POSIX.1\-2008. .SH HISTORIQUE C89, POSIX.1\-2001. .PP Dans les systèmes UNIX d'origine, quand un gestionnaire défini par \fBsignal\fP() était appelé lors de la distribution d'un signal, le gestionnaire du signal était remis à \fBSIG_DFL\fP, et le système ne bloquait pas la distribution des instances suivantes du signal. Cela revenait à appeler \fBsigaction\fP(2) avec les attribut suivants\ : .PP .in +4n .EX sa.sa_flags = SA_RESETHAND | SA_NODEFER; .EE .in .PP System\ V fournit également cette sémantique pour \fBsignal\fP(). Cela posait problème parce qu'un signal pouvait être distribué avant que le gestionnaire ait le temps de se réactiver. De plus, la distribution rapide d'un même signal pouvait causer des appels récursif au gestionnaire. .PP BSD a amélioré la situation, mais a malheureusement également modifié la sémantique de l'interface de \fBsignal\fP() en procédant de cette façon. Sous BSD, lorsqu'un gestionnaire de signal est appelé, la disposition du signal n'est pas réinitialisée, et les instances suivantes du signal ne peuvent être distribuées tant que le gestionnaire s'exécute. En outre, certains appels système bloquants sont automatiquement relancés s'ils sont interrompus par le gestionnaire de signal (consultez \fBsignal\fP(7)). La sémantique BSD est équivalente à un appel de \fBsigaction\fP(2) avec les attributs suivants\ : .PP .in +4n .EX sa.sa_flags = SA_RESTART; .EE .in .PP La situation sous Linux est la suivante\ : .IP \- 3 L'appel système \fBsignal\fP() du noyau fournit la sémantique System\ V. .IP \- .\" .\" System V semantics are also provided if one uses the separate .\" .BR sysv_signal (3) .\" function. .\" .IP * .\" The .\" .BR signal () .\" function in Linux libc4 and libc5 provide System\ V semantics. .\" If one on a libc5 system includes .\" .I .\" instead of .\" .IR , .\" then .\" .BR signal () .\" provides BSD semantics. Par défaut, dans la glibc\ 2 et les suivantes, la fonction de bibliothèque \fBsignal\fP() n'appelle pas l'appel système du noyau. À la place, elle appelle \fBsigaction\fP(2) est fournissant un attribut qui fournit la sémantique BSD. Ce comportement par défaut est fourni tant que la macro de test de fonctionnalités est définie\ : \fB_BSD_SOURCE\fP dans la glibc 2.19 et les précédentes ou \fB_DEFAULT_SOURCE\fP dans la glibc 2.19 et les suivantes (par défaut, ces macros sont définies\ ; consultez \fBfeature_test_macros\fP(7) pour des détails). Si une telle macro de test de fonctionnalités n'est pas définie, \fBsignal\fP() fournit la sémantique de System V. .SH NOTES Les effets de \fBsignal\fP() dans un processus multithreadé sont indéterminés. .PP Comme spécifié par POSIX, le comportement d'un processus est indéfini après la réception d'un signal \fBSIGFPE\fP, \fBSIGILL\fP, ou \fBSIGSEGV\fP qui n'a pas été engendré par une fonction \fBkill\fP(2) ou \fBraise\fP(3). La division entière par zéro a un résultat indéfini, sur certaines architectures elle déclenche un signal \fBSIGFPE\fP. De même, diviser l'entier le plus négatif par \-1 peut déclencher \fBSIGFPE\fP. .PP Consultez \fBsigaction\fP(2) pour des détails sur ce qui se passe quand la posture de \fBSIGCHLD\fP est positionnée sur \fBSIG_IGN\fP. .PP Consultez \fBsignal\-safety\fP(7) pour une liste de fonctions sûres pour les signaux asynchrones qui peuvent être appelées dans un gestionnaire de signaux. .SH "VOIR AUSSI" \fBkill\fP(1), \fBalarm\fP(2), \fBkill\fP(2), \fBpause\fP(2), \fBsigaction\fP(2), \fBsignalfd\fP(2), \fBsigpending\fP(2), \fBsigprocmask\fP(2), \fBsigsuspend\fP(2), \fBbsd_signal\fP(3), \fBkillpg\fP(3), \fBraise\fP(3), \fBsiginterrupt\fP(3), \fBsigqueue\fP(3), \fBsigsetops\fP(3), \fBsigvec\fP(3), \fBsysv_signal\fP(3), \fBsignal\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .