dwww Home | Manual pages | Find package

setpgid(2)                    System Calls Manual                   setpgid(2)

NOM
       setpgid,  getpgid, setpgrp, getpgrp - Définir ou lire le groupe du pro-
       cessus

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 version 2.12 de la glibc : */ _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  appe-
       lant 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 (consul-
       tez 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,  ren-
       voie 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 proces-
       sus  appelant),  ou par des appels à getpgid() tel que décrit précédem-
       ment.

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à effec-
              tué 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 ses-
              sion 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(),  setp-
              grp()).

       ESRCH  Pour getpgid() : pid ne correspond à aucun processus. Pour setp-
              gid() : pid n'est ni le processus appelant, ni l'un de  ses  en-
              fants.

STANDARDS
       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 proviennent de 4.2BSD et ne sont pas spéci-
       fiées par POSIX.1.

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  pro-
       cessus  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  pro-
       cessus dans une session différente (voyez credentials(7)).

VOIR AUSSI
       getuid(2),  setsid(2),  tcgetpgrp(3), tcsetpgrp(3), termios(3), creden-
       tials(7)

TRADUCTION
       La traduction française de cette page de manuel a été créée par  Chris-
       tophe  Blaess  <https://www.blaess.fr/christophe/>, Stéphan Rafin <ste-
       phan.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.cou-
       lon@wanadoo.fr>,  Julien  Cristau <jcristau@debian.org>, Thomas Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François  <nicolas.francois@centra-
       liens.net>,  Florentin  Duneau <fduneau@gmail.com>, Simon Paillard <si-
       mon.paillard@resel.enst-bretagne.fr>,   Denis   Barbier    <barbier@de-
       bian.org>,  David  Prévot  <david@tilapin.org>,  Cédric Boutillier <ce-
       dric.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⟩.

Pages du manuel de Linux 6.03   5 février 2023                      setpgid(2)

Generated by dwww version 1.15 on Sat Jun 29 01:47:51 CEST 2024.