Provided by:
manpages-fr-dev_3.32d0.2p4-1_all 
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 fonctionnalites 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
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 utilisees
pour recuperer et fixer l'ID du groupe de processus (PGID : << Process
Group ID >>) d'un processus. La facon preferee, celle specifiee par
POSIX.1 est : getpgrp(void) pour recuperer le PGID du processus
appelant et setpgid() pour fixer le PGID d'un processus.
setpgid() fixe a pgid le PGID du processus mentionne par pid. Si pid
vaut zero, alors le PID du processus appelant est utilise. Si pgid vaut
zero, alors le PGID du processus indique par pid est positionne a la
meme valeur que l'identifiant du processus. Si setpgid est utilise pour
deplacer un processus d'un groupe dans un autre (comme cela peut etre
fait par certains shell pour les pipelines), les deux groupes de
processus doivent appartenir a la meme session (consultez setsid(2) et
credentials(7)). Dans ce cas, pgid indique un groupe de processus
existant a rejoindre et l'ID de session de ce groupe doit etre celui du
processus concerne.
La version POSIX.1 de getpgrp(), qui ne prend pas de parametre, renvoie
le PGID du processus appelant.
getpgid() renvoie le PGID du processus indique par pid. Si pid vaut
zero, le PID du processus appelant est utilise. La recuperation du PGID
d'un processus autre que l'appelant est rarement utilisee et getpgrp()
est preferee pour cette tache.
L'appel setpgrp() de System V, qui ne prend pas de parametre, est
equivalent a setpgid(0, 0).
L'appel setpgrp() specifique a BSD qui prend des parametres pid et pgid
est equivalent a setpgid(pid, pgid).
L'appel getpgrp() specifique a BSD qui prend un unique parametre pid
est equivalent a getpgid(pid).
VALEUR RENVOY'EE
setpgid() et setpgrp() renvoient zero s'ils reussissent, ou -1 s'ils
echouent, auquel cas errno contient le code d'erreur.
L'appel getpgrp() de POSIX.1 renvoie le PGID du processus appelant.
getpgid() et l'appel specifique a BSD getpgrp() renvoient le groupe du
processus s'il reussit. En cas d'erreur -1 est renvoye et errno
contient le code d'erreur.
ERREURS
EACCES On a essaye de changer le groupe de processus d'un enfant du
processus appelant, et ce fils a deja effectue un execve(2)
(setpgid(), setpgrp()).
EINVAL pgid est inferieur a 0 (setpgid(), setpgrp()).
EPERM On a essaye de deplacer un processus dans un groupe d'une
session differente, 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 a aucun processus. Pour
setpgid() : pid n'est ni le processus appelant, ni l'un de ses
enfants.
CONFORMIT'E
setpgid() et la version de getpgrp() sans parametre sont conformes a
POSIX.1-2001.
POSIX.1-2001 specifie egalement getpgid() et la version de setpgrp()
qui ne prend pas de parametre. (POSIX.1-2008 marque cette specification
de setpgrp() comme obsolete)
La version de getpgrp() avec un parametre et la version de setpgrp()
qui prend deux parametres provient de BSD 4.2 et ne sont pas specifiees
par POSIX.1.
NOTES
Un processus fils cree par fork(2) herite du PGID de son pere. Le PGID
est conserve 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 controle. A tout moment, un (et
un seul) des groupes de processus de cette session peut etre le groupe
de premier plan du terminal ; les autre groupes de processus sont en
arriere plan. Si un signal est genere depuis le terminal (par exemple
une touche d'interruption pour generer un SIGINT), ce signal est envoye
au groupe de processus au premier plan. Consultez termios(3) pour la
liste des caracteres qui generent 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 recoit un signal SIGTSTP, qui le suspend. Les fonctions
tcgetpgrp(3) et tcsetpgrp(3) sont utilisees pour recuperer ou
positionner le groupe de processus au premier plan du terminal de
controle.
Les appels setpgid() et getpgrp() sont utilises par des programmes
comme bash(1) pour creer des groupes de processus pour l'implementation
du controle des travaux depuis l'interpreteur de commande.
Si une session a un terminal de controle et le drapeau CLOCAL de ce
terminal n'est pas actif, et une deconnexion se produit, alors le
leader de la session recevra un signal SIGHUP. Si le leader se termine,
le signal SIGHUP sera envoye a tous les processus du groupe au premier
plan sur le terminal de controle.
Si la fin du processus rend un groupe de processus orphelin, et si l'un
des membres de ce groupe est arrete, alors un signal SIGHUP suivi d'un
signal SIGCONT sera envoye a 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 differente (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.32 du projet man-pages
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent etre trouvees a l'adresse
<URL:http://www.kernel.org/doc/man-pages/>.
TRADUCTION
Depuis 2010, cette traduction est maintenue a l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'equipe 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'equipe francophone de traduction de Debian (2006-2009).
Veuillez signaler toute erreur de traduction en ecrivant a
<debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
paquet manpages-fr.
Vous pouvez toujours avoir acces a la version anglaise de ce document
en utilisant la commande << man -L C <section> <page_de_man> >>.