setpgid | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 fonctionalité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)
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
setpgid() fixe à pgid l'ID du groupe de processus auquel appartient le processus mentionné par pid. Si pid vaut zéro, le PID du processus appelant est utilisé. Si pgid vaut zéro, le PGID du processus indiqué par pid devient le même que son PID. Si setpgid() est utilisé pour déplacer un processus d'un groupe dans un autre (comme cela peut être fait par certains shells pour les pipelines), les deux groupes de processus doivent appartenir à la même session (voir 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 d'argument, renvoie le PGID du processus appelant.
getpgid() renvoie l'ID du groupe de processus auquel appartient le processus indiqué par pid. Si pid vaut zéro, le PID du processus appelant est utilisé. (Retrouver le PGID d'un processus autre que l'appelant est rarement nécessaire et l'appel POSIX.1 getpgrp() est préférable pour cette tâche.)
L'appel setpgrp() de style System V, qui ne prend pas d'argument, est équivalent à setpgid(0, 0).
L'appel setpgrp() spécifique à BSD, qui prend les arguments pid et pgid, est équivalent à setpgid(pid, pgid).
L'appel getpgrp() spécifique à BSD, qui prend un argument pid, est équivalent à getpgid(pid).
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
L'appel POSIX.1 getpgrp() renvoie toujours le PGID de l'appelant.
Les appels getpgid(), et getpgrp(), spécifiques BSD, renvoient le groupe de processus s'ils réussissent ou -1 s'ils échouent, et errno contient le code d'erreur.
ERREURS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
POSIX.1-2001 spécifie également getpgid() et la version de setpgrp() qui ne prend pas d'argument.
La version de getpgrp() avec un argument et la version de setpgrp() qui prend deux arguments sont dérivées de BSD 4.2 et ne sont pas spécifiées par POSIX.1.
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Chaque groupe de processus est membre d'une session et chaque processus est membre de la session dont le groupe de processus est membre.
Une session peut avoir un terminal de contrôle. À tout moment, un (et un seul) des groupes de processus de la session peut être le groupe de processus d'avant-plan du terminal ; les groupes de processus restant sont en arrière-plan. Si un signal est généré pour le terminal (par exemple, l'appui sur une touche pour générer SIGINT), ce signal est envoyé au groupe de processus d'avant-plan. (Voir termios(3) pour une description des caractères qui génèrent ces signaux.) Seul le groupe de processus d'avant-plan peut effectuer une lecture (read(2)) sur le terminal ; si un groupe de processus d'arrière-plan essaye d'effectuer une lecture read(2) sur le terminal, le groupe recevra un signal SIGTSTP qui le suspendra. Les fonctions tcgetpgrp(3) et tcsetpgrp(3) sont utilisées pour obtenir et définir le groupe de processus d'avant-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 afin d'implémenter le contrôle de tâches.
Si une session a un terminal de contrôle, que l'attribut CLOCAL pour ce terminal n'est pas positionné et qu'une déconnexion se produit, alors le leader de la session recevra SIGHUP. Si le leader se termine, le signal SIGHUP sera envoyé à tous les processus du groupe en avant-plan sur le terminal de contrôle.
Si la fin du processus rend un groupe orphelin, et si l'un des membres de ce groupe est arrêté, alors un signal SIGHUP suivi de SIGCONT sera envoyé à tous les processus du groupe.
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 15 octobre 1996 et révisée le 6 juin 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 2 setpgid ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |