NOM

setsid - Créer une session et définir l'identifiant du groupe de processus

BIBLIOTHÈQUE

Bibliothèque C standard ( libc, -lc)

SYNOPSIS

#include <unistd.h>
pid_t setsid(void);

DESCRIPTION

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

VALEUR RENVOYÉE

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.

ERREURS

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.

STANDARDS

POSIX.1-2001, POSIX.1-2008, SVr4.

NOTES

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.

VOIR AUSSI

setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(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 <[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]

Recommended readings

Pages related to setsid you should read also: