setpgid(2) System Calls Manual setpgid(2) NOM setpgid, getpgid, setpgrp, getpgrp - Definir ou lire le groupe du processus BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include int setpgid(pid_t pid, pid_t pgid); pid_t getpgid(pid_t pid); pid_t getpgrp(void); /* Version POSIX.1 */ [[obsolete]] pid_t getpgrp(pid_t pid); /* Version BSD */ int setpgrp(void); /* Version System V */ [[obsolete]] int setpgrp(pid_t pid, pid_t pgid); /* Version BSD */ Exigences de macros de test de fonctionnalites pour la glibc (consulter feature_test_macros(7)) : getpgid() : _XOPEN_SOURCE >= 500 || /* Depuis la glibc 2.12 : */ _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 utilisees pour recuperer et definir l'identifiant du groupe de processus (PGID : << Process Group ID >>) d'un processus. La facon preferee, specifiee par POSIX.1 est : getpgrp(void) pour recuperer le PGID du processus appelant et setpgid() pour definir le PGID d'un processus. setpgid() definit 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 interpreteurs de commandes 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 parametres, 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() de POSIX.1 est preferee pour cette tache. L'appel setpgrp() de System V, qui ne prend pas de parametres, est equivalent a setpgid(0, 0). L'appel setpgrp() specifique a BSD qui prend les parametres pid et pgid est une fonction d'encapsulation de setpgid(pid, pgid) A partir de la glibc 2.19, la fonction specifique a BSD setpgrp() ne figure plus dans ; les appels a cette fonction doivent etre remplaces par des appels a setpgid() tel qu'indique precedemment. L'appel getpgrp() specifique a BSD qui prend un unique parametre pid est une fonction d'encapsulation de getpgid(pid) A partir de la glibc 2.19, la fonction specifique a BSD getpgrp() ne figure plus dans ; les appels a cette fonction doivent etre remplaces par des appels a la fonction POSIX.1 getpgrp() qui ne prend pas d'argument (si l'appel a pour objet de recuperer le PGID du processus appelant), ou par des appels a getpgid() tel que decrit precedemment. VALEUR RENVOYEE setpgid() et setpgrp() renvoient zero s'ils reussissent, ou -1 s'ils echouent, auquel cas errno est positionne pour indiquer l'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'ils reussissent. En cas d'erreur, -1 est renvoye et errno est positionne pour indiquer l'erreur. ERREURS EACCES On a essaye de changer l'identifiant du groupe de processus d'un des enfants du processus appelant, et l'enfant avait 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 des enfants du processus appelant qui se trouve dans une autre session, ou de modifier le groupe d'un leader de session (setpgid(), setpgrp()). EPERM Le groupe du processus cible n'existe pas. (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. STANDARDS getpgid() setpgid() getpgrp() (pas d'argument) setpgrp() (pas d'argument) POSIX.1-2008 (mais voir HISTORIQUE). setpgrp() (2 arguments) getpgrp() (1 argument) Aucun. HISTORIQUE getpgid() setpgid() getpgrp() (pas d'argument) POSIX.1-2001. setpgrp() (pas d'argument) POSIX.1-2001, POSIX.1-2008 le marque comme obsolete. setpgrp() (2 arguments) getpgrp() (1 argument) 4.2BSD. NOTES Un processus enfant cree par fork(2) herite du PGID de son parent. 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 (voir credentials(7)). 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 en arriere-plan essaie de lire avec read(2) sur le terminal, alors le groupe recoit un signal SIGTTIN, 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 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) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot , Cedric Boutillier , Frederic Hantrais et Jean-Philippe MENGUAL Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 setpgid(2)