.\" -*- coding: UTF-8 -*-
.\" Copyright (C) 2008, 2014, Michael Kerrisk <mtk.manpages@gmail.com>
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" Created   Sat Aug 21 1995     Thomas K. Dyas <tdyas@eden.rutgers.edu>
.\" Modified Tue Oct 22 22:09:03 1996 by Eric S. Raymond <esr@thyrsus.com>
.\" 2008-06-26, mtk, added some more detail on the work done by sigreturn()
.\" 2014-12-05, mtk, rewrote all of the rest of the original page
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH sigreturn 2 "5 février 2023" "Pages du manuel de Linux 6.03" 
.SH NOM
sigreturn, rt_sigreturn \- Revenir d'un gestionnaire de signaux et nettoyer
la pile
.SH BIBLIOTHÈQUE
Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP)
.SH SYNOPSIS
.nf
\fBint sigreturn(...);\fP
.fi
.SH DESCRIPTION
.\" See arch/x86/kernel/signal.c::__setup_frame() [in Linux 3.17 source code]
Si le noyau Linux détermine qu'un signal non bloqué est en attente d'un
processus, au prochain retour en mode utilisateur de ce processus (par
exemple au retour d'un appel système ou quand le processus est réordonnancé
sur le processeur), il créera un nouvel emplacement dans la pile de l'espace
utilisateur où il enregistrera des morceaux de contexte de processus (mot
sur l'état du processeur, registres, masque de signal et paramètres de la
pile du signal).
.PP
Le noyau s'arrange aussi pour que, lors du retour à l'espace utilisateur, le
gestionnaire de signal soit appelé et pour qu'au retour du gestionnaire, le
contrôle soit redonné à un bout de code de l'espace utilisateur appelé
généralement le «\ trampoline de signal\ ». En retour, ce code appelle
\fBsigreturn\fP().
.PP
Cet appel à \fBsigreturn\fP() défait tout ce qui a été fait \[em] modifier le
masque de signaux du processus, commutation des piles (consultez
\fBsigaltstack\fP(2)) \[em] de façon à invoquer le gestionnaire de
signal. L'utilisation des informations précédemment sauvegardées dans la
pile de l'espace utilisateur \fBsigreturn\fP() restaure le masque de signal du
processus, commute les piles et restaure le contexte du processus (drappeaux
et registres du processeur, notamment le pointeur de la pile et les
instructions du pointeur), de sorte que le processus reprenne son exécution
au point où il a été interrompu par le signal.
.SH "VALEUR RENVOYÉE"
\fBsigreturn\fP() ne renvoit jamais.
.SH STANDARDS
De nombreux systèmes de type UNIX ont un appel système \fBsigreturn\fP() ou
presque équivalent. Cependant, cet appel n'est pas spécifié dans POSIX et
les détails de son comportement varient en fonction des systèmes.
.SH NOTES
.\" See sysdeps/unix/sysv/linux/sigreturn.c and
.\" signal/sigreturn.c in the glibc source
\fBsigreturn\fP() n'existe que pour permettre l'implémentation de gestionnaires
de signal. Il ne devrait \fBjamais\fP être appelé directement (en effet, une
simple enveloppe \fBsigreturn\fP() de la bibliothèque GNU C renvoie simplement
\fB\-1\fP et \fIerrno\fP est positionné sur \fBENOSYS\fP). Les détails des paramètres
(s'il y en a) passés à \fBsigreturn\fP() varient selon l'architecture (sur
certaines architectures telles que x86\-64, \fBsigreturn\fP() ne prend aucun
paramètre puisque toutes les informations dont il a besoin sont disponibles
dans la pile créée précédemment par le noyau dans la pile de l'espace
utilisateur).
.PP
.\" See, for example, sysdeps/unix/sysv/linux/i386/sigaction.c and
.\" sysdeps/unix/sysv/linux/x86_64/sigaction.c in the glibc (2.20) source.
Autrefois, les systèmes UNIX mettaient le code du trampoline de signal dans
la pile utilisateur. De nos jours, les pages de la pile utilisateur sont
protégées pour interdire l'exécution d'un code. Ainsi, sur les systèmes
Linux contemporains, selon l'architecture, le code du trampoline de signal
réside soit dans le \fBvdso\fP(7), soit dans la bibliothèque\ C. Dans ce dernier
cas, la fonction enveloppe \fBsigaction\fP(2) de la bibliothèque\ C informe le
noyau de l'emplacement du code du trampoline en mettant son adresse dans le
champ \fIsa_restorer\fP de la structure \fIsigaction\fP et il positonne le drapeau
\fBSA_RESTORER\fP dans le champ \fIsa_flags\fP.
.PP
Les informations du contexte du processus sauvegardées vont dans la
structure \fIucontext_t\fP (consultez \fI<sys/ucontext.h>\fP). Cette
structure est visible à l'intérieur du gestionnaire de signal comme le
troisième paramètre d'un gestionnaire mis en place à l'aide de
\fBsigaction\fP(2) avec le drapeau \fBSA_SIGINFO\fP.
.PP
.\"
Sur d'autres systèmes UNIX, l'opération de trampoline du signal diffère
quelque peu. En particulier, sur certains systèmes où il y a une transition
vers le retour à l'espace utilisateur, le noyau donne le contrôle au
trampoline (plutôt qu'au gestionnaire de signal) et le code du trampoline
appelle le gestionnaire de signal (puis appelle \fBsigreturn\fP() après le
renvoi du gestionnaire de signal).
.SS "différences entre bibliothèque C et noyau"
.\"
L'appel système Linux d'origine s'appelait \fBsigreturn\fP(). Toutefois, avec
l'arrivée des signaux en temps réel dans Linux\ 2.2, un nouvel appel système,
\fBrt_sigreturn\fP(), a été ajouté pour prendre en charge un type \fIsigset_t\fP
élargi. La bibliothèque GNU\ C nous cache ces détails en appelant de manière
transparente \fBrt_sigreturn\fP() quand le noyau le fournit.
.SH "VOIR AUSSI"
\fBkill\fP(2), \fBrestart_syscall\fP(2), \fBsigaltstack\fP(2), \fBsignal\fP(2),
\fBgetcontext\fP(3), \fBsignal\fP(7), \fBvdso\fP(7)
.PP
.SH TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>,
Cédric Boutillier <cedric.boutillier@gmail.com>,
Frédéric Hantrais <fhantrais@gmail.com>
et
Jean-Philippe MENGUAL <jpmengual@debian.org>
.
.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 .