setpgid, getpgid, setpgrp, getpgrp - Fixer / lire le groupe du processus.
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 en cours est utilisé. Si
pgid
vaut zéro, le PID du processus indiqué par
pid
est utilisé. 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.
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é.
getpgid
renvoie l'ID du groupe de processus auquel appartient le processus
indiqué par
pid.
Si
pid
vaut zéro, le PID du processus en cours est utilisé.
L'appel
setpgrp ()
invoque simplement
setpgid(0,0).
De même
getpgrp
est équivalent à
getpgid(0).
Chaque groupe de processus est membre d'une session et chaque processus
est membre de cette session.
Les groupes de processus sont utilisés pour la distribution de signaux,
et par les terminaux pour contrôler les requêtes de saisie.
Les processus appartenant au même groupe que le terminal sont
en avant-plan, et peuvent y lire des données, alors que les autres sont
en arrière plan et seront bloqués s'ils tentent de lire des données.
Ces appels sont utilisés par des programmes comme
csh(1)
pour créer des groupes de processus afin d'implémenter le contrôle de jobs.
Les appels
TIOCGPGRP
et
TIOCSPGRP
décrits dans
termios(3)
servent à fixer/lire le groupe de processus du terminal de contrôle.
Si une session a un terminal de contrôle, CLOCAL n'est pas actif, et une
deconnexion 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.
POSIX à défini
setpgid
à partir de la fonction
setpgrp
de BSD. Une fonction Système V existe avec le même nom, mais
fonctionnant comme
setsid(2).
Pour obtenir les prototypes avec la GlibC, définissez à la fois _XOPEN_SOURCE
et _XOPEN_SOURCE_EXTENDED ou utilisez un "#define _XOPEN_SOURCE
n"
avec
n supérieur ou égal à 500.
Christophe Blaess, 1996-2003.