Provided by: manpages-fr-dev_3.57d1p1-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.57 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> ».