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

NOM

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

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

SYNOPSIS

       #include <unistd.h>

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

       pid_t getpgrp(void);                            /* Version POSIX.1 */
       [[obsolète]] pid_t getpgrp(pid_t pid);        /* Version BSD */

       int setpgrp(void);                              /* Version System V */
       [[obsolète]] 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
       "        || /* 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 est positionné pour indiquer l'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'ils
       réussissent. En cas d'erreur, -1  est  renvoyé  et  errno  est  positionné  pour  indiquer
       l'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()).

       EPERM  Le groupe du processus cible n'existe pas. (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.

STANDARDS

       getpgid()
       setpgid()
       getpgrp() (pas d'argument)
       setpgrp() (pas d'argument)
              POSIX.1-2008 (mais voir HISTORIQUE).

       setpgrp() (2 arguments)
       getpgrp() (1 argument)
              Aucun.

HISTORIQUE

       getpgid()
       setpgid()
       getpgrp() (pas d'argument)
              POSIX.1-2001.

       setpgrp() (pas d'argument)
              POSIX.1-2001, POSIX.1-2008 le marque comme obsolète.

       setpgrp() (2 arguments)
       getpgrp() (1 argument)
              4.2BSD.

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)

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