setsid - Créer une session et définir l'identifiant du groupe de
processus
Bibliothèque C standard (
libc,
-lc)
#include <unistd.h>
pid_t setsid(void);
setsid() crée une nouvelle session si le processus appelant n'est
pas un leader de groupe. Le processus appelant devient le leader du nouveau
groupe (c'est-à-dire que son ID de groupe est le même que son ID
de processus). Le processus appelant devient également le leader du
groupe du processus du nouveau groupe de la nouvelle session (à savoir
que son ID de groupe est le même que son ID de processus).
Le processus appelant sera le seul du nouveau groupe et de la nouvelle session.
Au début, la nouvelle session n'a pas de terminal de contrôle.
Pour des détails sur la manière dont une session obtient un
terminal de contrôle, consultez
credentials(7).
En cas de succès, l'identifiant de la (nouvelle) session du processus
appelant est renvoyé. En cas d'échec,
(pid_t) -1
est renvoyé, et
errno contient le code de l'erreur.
- EPERM
- L'identifiant du groupe de processus d'un processus
quelconque est égal au PID du processus appelant. En particulier
setsid() échoue si le processus appelant est
déjà leader d'un groupe.
POSIX.1-2001, POSIX.1-2008, SVr4.
Un enfant créé par
fork(2) hérite de l'identifiant
de session de son parent. L'identifiant de session est conservé au
travers d'un
execve(2).
Un leader de groupe est un processus dont l'ID de groupe est le même que
son PID. Empêcher un leader de groupe d'appeler
setsid()
supprime la possibilité qu'un leader n'aille lui-même dans une
nouvelle session alors que d'autres processus du même groupe restent
dans celle d'origine ; un tel scénario casserait la
hiérarchie stricte à deux niveaux de sessions et de groupes de
processus. Pour vous assurer que
setsid() va réussir, appelez
fork(2) avec un parent
_exit(2), tandis qu'un enfant (qui, par
définition, ne peut pas être un leader de groupe) appelle
setsid().
Si une session a un terminal de contrôle dont le drapeau
CLOCAL
n'est pas positionné et qu'une déconnexion se produit, alors le
leader de la session recevra un signal
SIGHUP. Si le leader se termine,
le signal
SIGHUP sera envoyé à tous les processus du
groupe au premier plan sur le terminal de contrôle.
Si un processus leader de session se termine, un signal
SIGHUP est
envoyé à tous les processus du groupe au premier plan sur le
terminal de contrôle.
setsid(1),
getsid(2),
setpgid(2),
setpgrp(2),
tcgetsid(3),
credentials(7),
sched(7)
La traduction française de cette page de manuel a été
créée par Christophe Blaess
<
https://www.blaess.fr/christophe/>, Stéphan Rafin
<
[email protected]>, Thierry Vignaud
<
[email protected]>, François Micaux, Alain Portal
<
[email protected]>, Jean-Philippe Guérard
<
[email protected]>, Jean-Luc Coulon (f5ibh)
<
[email protected]>, Julien Cristau
<
[email protected]>, Thomas Huriaux <
[email protected]>,
Nicolas François <
[email protected]>, Florentin
Duneau <
[email protected]>, Simon Paillard
<
[email protected]>, Denis Barbier
<
[email protected]>, David Prévot <
[email protected]>,
Cédric Boutillier <
[email protected]>,
Frédéric Hantrais <
[email protected]> et Jean-Philippe
MENGUAL <
[email protected]>
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 à
[email protected]