Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       setpgid, getpgid, setpgrp, getpgrp - Définir ou lire le groupe du processus

SYNOPSIS

       #include <sys/types.h>
       #include <unistd.h>

       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);

       pid_t getpgrp(void); /* version POSIX.1 */
       pid_t getpgrp(pid_t pid); /* Version BSD */

       int setpgrp(void); /* version System V */
       int setpgrp(pid_t pid, pid_t pgid); /* Version BSD */

   Exigences    de    macros    de   test   de   fonctionnalités   pour   la   glibc   (consulter
   feature_test_macros(7)) :

       getpgid() :
           _XOPEN_SOURCE >= 500
               || /* Depuis la glibc 2.12 : */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1) :
           _XOPEN_SOURCE >= 500
               || /* Depuis la glibc 2.19 : */ _DEFAULT_SOURCE
               || /* Versions de la glibc <= 2.19 : */ _SVID_SOURCE

       setpgrp() (BSD), getpgrp() (BSD) :
           [Ils ne sont disponibles qu'avant la glibc 2.19]
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||
                   _GNU_SOURCE || _SVID_SOURCE)

DESCRIPTION

       Toutes ces interfaces sont disponibles sous Linux et  sont  utilisées  pour  récupérer  et
       définir l'identifiant du groupe de processus (PGID : « Process Group ID ») d'un processus.
       La façon préférée, spécifiée par POSIX.1 est : getpgrp(void) pour  récupérer  le  PGID  du
       processus appelant et setpgid() pour définir le PGID d'un processus.

       setpgid()  définit  à pgid le PGID du processus mentionné par pid. Si pid vaut zéro, alors
       le PID du processus appelant est utilisé. Si pgid vaut zéro, alors le  PGID  du  processus
       indiqué par pid est positionné à la même valeur que l'identifiant du processus. Si setpgid
       est utilisé pour déplacer un processus d'un groupe dans un autre  (comme  cela  peut  être
       fait  par  certains  interpréteurs  de  commandes pour les pipelines), les deux groupes de
       processus doivent appartenir à la même session (consultez  setsid(2)  et  credentials(7)).
       Dans  ce  cas, pgid indique un groupe de processus existant à rejoindre et l'ID de session
       de ce groupe doit être celui du processus concerné.

       La version POSIX.1 de getpgrp(), qui ne prend  pas  de  paramètres,  renvoie  le  PGID  du
       processus appelant.

       getpgid()  renvoie  le  PGID  du  processus  indiqué  par pid. Si pid vaut zéro, le PID du
       processus appelant  est  utilisé.  La  récupération  du  PGID  d'un  processus  autre  que
       l'appelant est rarement utilisée et getpgrp() de POSIX.1 est préférée pour cette tâche.

       L'appel  setpgrp()  de  System V,  qui  ne  prend  pas  de  paramètres,  est  équivalent à
       setpgid(0, 0).

       L'appel setpgrp() spécifique à BSD qui prend les paramètres pid et pgid est  une  fonction
       d'encapsulation de

           setpgid(pid, pgid)

       A  partir  de  la  glibc  2.19, la fonction spécifique à BSD setpgrp() ne figure plus dans
       <unistd.h> ; les appels à cette fonction doivent être remplacés par des appels à setpgid()
       tel qu'indiqué précédemment.

       L'appel  getpgrp()  spécifique  à  BSD  qui prend un unique paramètre pid est une fonction
       d'encapsulation de

           getpgid(pid)

       A partir de la glibc 2.19, la fonction spécifique à BSD  getpgrp()  ne  figure  plus  dans
       <unistd.h> ;  les  appels  à  cette  fonction  doivent  être remplacés par des appels à la
       fonction POSIX.1 getpgrp() qui ne prend  pas  d'argument  (si  l'appel  a  pour  objet  de
       récupérer  le  PGID  du  processus appelant), ou par des appels à getpgid() tel que décrit
       précédemment.

VALEUR RENVOYÉE

       setpgid() et setpgrp() renvoient zéro s'ils réussissent ou -1 s'ils échouent,  auquel  cas
       errno contient le code d'erreur.

       L'appel getpgrp() de POSIX.1 renvoie le PGID du processus appelant.

       getpgid()  et  l'appel  spécifique  à  BSD getpgrp() renvoient le groupe du processus s'il
       réussit. En cas d'erreur -1 est renvoyé et errno contient le code d'erreur.

ERREURS

       EACCES On a essayé de changer l'identifiant du groupe de processus  d'un  des  enfants  du
              processus  appelant,  et  l'enfant  avait  déjà  effectué  un execve(2) (setpgid(),
              setpgrp()).

       EINVAL pgid est inférieur à 0 (setpgid(), setpgrp()).

       EPERM  On a essayé de déplacer un processus dans un groupe d'une session différente, ou de
              changer  le  groupe  d'un  des enfants du processus appelant qui se trouve dans une
              autre session, ou  de  modifier  le  groupe  d'un  leader  de  session  (setpgid(),
              setpgrp()).

       ESRCH  Pour getpgid() : pid ne correspond à aucun processus. Pour setpgid() : pid n'est ni
              le processus appelant, ni l'un de ses enfants.

CONFORMITÉ

       setpgid() et la version de getpgrp() sans paramètre sont conformes à POSIX.1-2001.

       POSIX.1-2001 spécifie également getpgid() et la version de setpgrp() qui ne prend  pas  de
       paramètre. (POSIX.1-2008 marque cette spécification de setpgrp() comme obsolète)

       La  version  de  getpgrp()  avec  un  paramètre  et la version de setpgrp() qui prend deux
       paramètres proviennent de 4.2BSD et ne sont pas spécifiées par POSIX.1.

NOTES

       Un processus enfant créé par fork(2) hérite du PGID de son parent. Le PGID est conservé au
       travers d'un execve(2).

       Chaque  groupe  de  processus  est  membre d'une session et chaque processus est membre de
       cette session (voir credentials(7)).

       Une session peut avoir un terminal de contrôle. À tout moment, un (et un seul) des groupes
       de  processus de cette session peut être le groupe de premier plan du terminal ; les autre
       groupes de processus sont en arrière-plan. Si un signal est généré depuis le terminal (par
       exemple  une touche d'interruption pour générer un SIGINT), ce signal est envoyé au groupe
       de processus au premier plan. Consultez  termios(3)  pour  la  liste  des  caractères  qui
       génèrent  des  signaux. Seul le groupe de processus au premier plan peut lire avec read(2)
       sur le terminal ; si un groupe de processus en arrière-plan essaie de  lire  avec  read(2)
       sur  le  terminal, alors le groupe reçoit un signal SIGTTIN, qui le suspend. Les fonctions
       tcgetpgrp(3) et tcsetpgrp(3) sont utilisées pour récupérer ou  positionner  le  groupe  de
       processus au premier plan du terminal de contrôle.

       Les  appels  setpgid()  et  getpgrp()  sont utilisés par des programmes comme bash(1) pour
       créer des groupes de processus  pour  l'implémentation  du  contrôle  des  travaux  depuis
       l'interpréteur de commande.

       Si  la fin du processus rend un groupe de processus orphelin, et si l'un des membres de ce
       groupe est arrêté, alors un signal SIGHUP suivi d'un signal SIGCONT sera envoyé à tous les
       processus  du  groupe orphelin. Un groupe de processus est orphelin si le parent de chaque
       processus du groupe est soit membre de ce groupe ou soit membre d'un groupe  de  processus
       dans une session différente (voyez credentials(7)).

VOIR AUSSI

       getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7)

COLOPHON

       Cette  page  fait partie de la publication 5.10 du projet man-pages Linux. Une description
       du projet et des instructions pour signaler des anomalies et la dernière version de  cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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 ⟨⟩.