Provided by: manpages-fr-dev_4.26.0-1_all bug

NOM

       sigreturn, rt_sigreturn - Revenir d'un gestionnaire de signaux et nettoyer la pile

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       int sigreturn(...);

DESCRIPTION

       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).

       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 sigreturn().

       Cet appel à sigreturn() défait tout ce qui a été fait — modifier  le  masque  de  signaux  du  processus,
       commutation  des  piles  (consultez  sigaltstack(2))  —  de  façon  à invoquer le gestionnaire de signal.
       L'utilisation des informations précédemment sauvegardées dans la pile de l'espace utilisateur sigreturn()
       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.

VALEUR RENVOYÉE

       sigreturn() ne renvoit jamais.

VERSIONS

       De  nombreux systèmes de type UNIX ont un appel système sigreturn() 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.

STANDARDS

       Aucun.

NOTES

       sigreturn() n'existe que pour permettre l'implémentation de gestionnaires de signal. Il ne devrait jamais
       être appelé directement (en effet, une simple enveloppe sigreturn() de  la  bibliothèque  GNU  C  renvoie
       simplement  -1  et  errno  est  positionné sur ENOSYS). Les détails des paramètres (s'il y en a) passés à
       sigreturn() varient selon l'architecture (sur certaines architectures telles que x86-64,  sigreturn()  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).

       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  vdso(7),  soit  dans la bibliothèque C. Dans ce dernier cas, la fonction enveloppe sigaction(2) de la
       bibliothèque C informe le noyau de l'emplacement du code du trampoline en mettant  son  adresse  dans  le
       champ  sa_restorer  de  la  structure  sigaction  et  il  positonne  le drapeau SA_RESTORER dans le champ
       sa_flags.

       Les informations du contexte du processus sauvegardées  vont  dans  la  structure  ucontext_t  (consultez
       <sys/ucontext.h>). 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 sigaction(2) avec le drapeau SA_SIGINFO.

       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 sigreturn() après le renvoi du gestionnaire de signal).

   Différences entre bibliothèque C et noyau
       L'appel système Linux d'origine s'appelait sigreturn(). Toutefois, avec l'arrivée des  signaux  en  temps
       réel dans Linux 2.2, un nouvel appel système, rt_sigreturn(), a été ajouté pour prendre en charge un type
       sigset_t  élargi.  La  bibliothèque  GNU  C  nous  cache  ces détails en appelant de manière transparente
       rt_sigreturn() quand le noyau le fournit.

VOIR AUSSI

       kill(2), restart_syscall(2), sigaltstack(2), signal(2), getcontext(3), signal(7), vdso(7)

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>

       Cette traduction est une documentation libre ; veuillez vous  reporter  à  la  GNU General Public License
       version 3 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 à
       debian-l10n-french@lists.debian.org.

Pages du manuel de Linux 6.9.1                     2 mai 2024                                       sigreturn(2)