Provided by: manpages-fr-dev_3.65d1p1-1_all bug

NOM

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

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 */
       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 (consultez feature_test_macros(7)) :

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

       setpgrp() (POSIX.1) :
           _SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
           _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Depuis la glibc 2.19: */ _BSD_SOURCE

       setpgrp() (BSD), getpgrp()  (BSD) [avant glibc 2.19] :
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||
                  _XOPEN_SOURCE_EXTENDED || _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,
       celle 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 shell 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ètre, 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() est préférée pour cette tâche.

       L'appel setpgrp() de System V, qui ne prend pas de paramètre, 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  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 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 le groupe de processus d'un enfant du processus appelant, et ce fils a 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  fils  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  provient
       de BSD 4.2 et ne sont pas spécifiées par POSIX.1.

NOTES

       Un  processus  fils  créé  par  fork(2)  hérite du PGID de son père. 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.

       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 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  une  session  a  un  terminal de contrôle et le drapeau CLOCAL de ce terminal n'est pas actif, et 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  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 3.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

       Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par
       l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

       Christophe       Blaess       <http://www.blaess.fr/christophe/>      (1996-2003),      Alain      Portal
       <http://manpagesfr.free.fr/> (2003-2006).  Julien  Cristau  et  l'équipe  francophone  de  traduction  de
       Debian (2006-2009).

       Veuillez  signaler  toute erreur de traduction en écrivant à <debian-l10n-french@lists.debian.org> ou par
       un rapport de bogue sur le paquet manpages-fr.

       Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « man -L C
       <section> <page_de_man> ».