Loading

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(psid_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 (voir
   feature_test_macros(7)) :

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

       setpgrp() (BSD), getpgrp() (BSD) : _BSD_SOURCE && ! (_POSIX_SOURCE ||
       _POSIX_C_SOURCE || _XOPEN_SOURCE || _XOPEN_SOURCE_EXTENDED ||
       _GNU_SOURCE || _SVID_SOURCE)

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

       Cette  page  de  manuel  a  été  traduite et mise à jour par Christophe
       Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003, puis  par
       Alain  Portal  <aportal AT univ-montp2 DOT fr> jusqu’en 2006, et mise à
       disposition sur http://manpagesfr.free.fr/.

       Les mises à jour et corrections de la version présente dans Debian sont
       directement gérées par Julien Cristau <jcristau@debian.org> et l’équipe
       francophone de traduction de Debian.

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