.\" -*- 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 . .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" 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 "15 septembre 2017" Linux "Manuel du programmeur Linux" .SH NOM signal \- Gestion de signaux ANSI C .SH SYNOPSIS \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 .SH DESCRIPTION \fBWARNING\fP: the behavior of \fBsignal\fP() varies across UNIX versions, and has also varied historically across different versions of Linux. \fBAvoid its use\fP: use \fBsigaction\fP(2) instead. See \fIPortability\fP below. .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, ou \fBSIG_ERR\fP en cas d'erreur. En cas d'erreur, \fIerrno\fP contient le code d'erreur. .SH ERREURS .TP \fBEINVAL\fP \fIsignum\fP est invalide. .SH CONFORMITÉ POSIX.1\-2001, POSIX.1\-2008, C89, C99. .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 See \fBsigaction\fP(2) for details on what happens when the disposition \fBSIGCHLD\fP is set to \fBSIG_IGN\fP. .PP See \fBsignal\-safety\fP(7) for a list of the async\-signal\-safe functions that can be safely called from inside a signal handler. .PP .\" libc4 and libc5 define .\" .IR SignalHandler ; The use of \fIsighandler_t\fP is a GNU extension, exposed if \fB_GNU_SOURCE\fP is defined; glibc also defines (the BSD\-derived) \fIsig_t\fP if \fB_BSD_SOURCE\fP (glibc 2.19 and earlier) or \fB_DEFAULT_SOURCE\fP (glibc 2.19 and later) is defined. Without use of such a type, the declaration of \fBsignal\fP() is the somewhat harder to read: .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(). .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 * 2 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. By default, in glibc 2 and later, the \fBsignal\fP() wrapper function does not invoke the kernel system call. Instead, it calls \fBsigaction\fP(2) using flags that supply BSD semantics. This default behavior is provided as long as a suitable feature test macro is defined: \fB_BSD_SOURCE\fP on glibc 2.19 and earlier or \fB_DEFAULT_SOURCE\fP in glibc 2.19 and later. (By default, these macros are defined; see \fBfeature_test_macros\fP(7) for details.) If such a feature test macro is not defined, then \fBsignal\fP() provides System\ V semantics. .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) .SH COLOPHON Cette page fait partie de la publication\ 5.10 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .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 et Frédéric Hantrais . 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. 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 .