Provided by: manpages-fr-dev_3.27fr1.4-1_all bug

NOM

       setpgid, getpgid, setpgrp, getpgrp - Fixer/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() :
           Depuis la glibc 2.12 :
               _POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 500 ||
               _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           Avant la glibc 2.12 :
               _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

       setpgrp() (POSIX.1) :
           _SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
           _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

       setpgrp() (BSD), getpgrp() (BSD) :
           _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 fixer l'ID 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 fixer le PGID d'un processus.

       setpgid()  fixe  à  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 des paramètres pid et pgid
       est équivalent à setpgid(pid, pgid).

       L'appel getpgrp() spécifique à BSD qui prend un  unique  paramètre  pid
       est équivalent à getpgid(pid).

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 SIGTSTP, 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.27 du projet man-pages
       Linux. Une description du projet et des instructions pour signaler  des
       anomalies       peuvent       être       trouvées      à      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

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

       Christophe  Blaess  <URL:http://www.blaess.fr/christophe/> (1996-2003),
       Alain  Portal  <URL: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> ».