sigsuspend
Section: System Calls (2)
Updated: 30 octobre 2022
Index
Return to Main Contents
NOM
sigsuspend, rt_sigsuspend - Attendre un signal
BIBLIOTHÈQUE
Bibliothèque C standard (libc, -lc)
SYNOPSIS
#include <signal.h>
int sigsuspend(const sigset_t *mask);
Exigences de macros de test de fonctionnalités pour la glibc (consulter
feature_test_macros(7)) :
sigsuspend() :
_POSIX_C_SOURCE
DESCRIPTION
sigsuspend() remplace temporairement le masque de signal du thread
appelant par le msque donné par mask, puis il suspend le thread jusqu'à
ce qu'arrive un signal dont l'action consiste à appeler un gestionnaire de
signal ou à terminer un processus.
Si le signal termine le processus, sigsuspend() ne retourne pas à
l'appelant. Si le signal est intercepté, sigsuspend() retourne après
l'exécution du gestionnaire, et le masque de signaux bloqués est restauré à
sa valeur précédant l'appel à sigsuspend().
Il n'est pas possible de bloquer SIGKILL ou SIGSTOP ; spécifier ces
signaux dans mask n'a aucun effet sur le masque de signaux du thread.
VALEUR RENVOYÉE
sigsuspend() renvoie toujours -1, et errno est normalement positionné
à EINTR.
ERREURS
- EFAULT
-
mask pointe en-dehors de l'espace d'adressage accessible.
- EINTR
-
L'appel a été interrompu par des signaux signal(7).
STANDARDS
POSIX.1-2001, POSIX.1-2008.
NOTES
En général, sigsuspend() est utilisé conjointement avec sigprocmask(2)
pour empêcher l'arrivée d'un signal pendant l'exécution d'une section de
code critique. L'appelant commence par bloquer les signaux avec
sigprocmask(2). Après la fin de la section critique, l'appelant attend
les signaux avec sigsuspend() utilisé avec le masque renvoyé par
sigprocmask(2) (dans l'argument oldset).
Consultez sigsetops(3) pour les détails concernant les ensembles de
signaux.
différences entre bibliothèque C et noyau
L'appel système Linux d'origine s'appelait sigsuspend(). Toutefois, avec
l'arrivée des signaux en temps réel dans Linux 2.2 et de la taille figée, le
type sigset_t 32 bits pris en charge par cet appel système ne convenait
plus à cet objectif. Par conséquent, un nouvel appel système
rt_sigsuspend() a été ajouté pour prendre en charge le type sigset_t
élargi. Le nouvel appel système prend un deuxième paramètre, size_t sigsetsize, qui indique la taille en octets des jeux de signal positionné
dans mask. Ce paramètre est actuellement nécessaire pour obtenir la
valeur sizeof(sigset_t) (ou le résultat de l'erreur EINVAL). La
fonction enveloppe sigsuspend() de la glibc nous cache ces détails en
appelant de manière transparente rt_sigsuspend() quand le noyau le
fournit.
VOIR AUSSI
kill(2), pause(2), sigaction(2), signal(2), sigprocmask(2),
sigwaitinfo(2), sigsetops(3), sigwait(3), signal(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 à
Index
- NOM
-
- BIBLIOTHÈQUE
-
- SYNOPSIS
-
- DESCRIPTION
-
- VALEUR RENVOYÉE
-
- ERREURS
-
- STANDARDS
-
- NOTES
-
- différences entre bibliothèque C et noyau
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 15:50:54 GMT, May 22, 2024