Date création : 27-03-2008 20:23:44
 Vous êtes dans : GNU/Linux Astuces / Pages man [Section2 - Appels système]
SETPGID
Index
- NOM
- SYNOPSIS
- DESCRIPTION
- VALEUR RENVOYÉE
- ERREURS
- CONFORMITÉ
- NOTES
- VOIR AUSSI
- TRADUCTION
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);
int setpgrp(void);
pid_t getpgrp(void);
DESCRIPTION
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 au premier 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
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 au premier 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.
VALEUR RENVOYÉE
setpgid() et setpgrp() renvoient zéro s'ils réussissent, ou -1 s'ils
échouent, auquel cas errno contient le code d'erreur.
getpgid() renvoie le groupe du processus s'il réussit ou -1 s'il échoue,
et errno contient le code d'erreur.
getpgrp() retourne toujours le groupe du processus courant.
ERREURS
- EACCES
-
On a essayé de changer le groupe de processus d'un enfant du processus
appelant, et ce fils a déjà effectué un execve() (setpgid(),
setpgrp()).
- EINVAL
-
pgid est inférieur à 0 (setpgid(), setpgrp()).
- EPERM
-
On a essayé de déplacer un processus dans un groupe d'une session
différente, 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 à aucun processus. Pour
setpgid() : pid n'est ni le processus appelant, ni l'un de ses
enfants.
CONFORMITÉ
Les fonctions setpgid() et getpgrp() sont conformes à POSIX.1-2001. La
fonction setpgrp() provient de BSD 4.2, et getpgid() de SVr4.
NOTES
Un processus fils créé par fork(2) hérite du PGID de son père. Le PGID
est conservé après un execve(2).
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.
VOIR AUSSI
getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3),
feature_test_macros(7)
TRADUCTION
Cette page de manuel a été traduite et mise à jour par
Christophe Blaess <http://www.blaess.fr/christophe/> entre 1996 et 2003,
puis par Alain Portal <aportal AT univ-montp2 DOT fr> jusqu'en 2006.
La traduction de cette page de manuel est basée sur les traductions
disponibles sur http://manpagesfr.free.fr/,
mais est gérée par l'équipe francophone de traduction de Debian
au travers de la liste de discussion debian-l10n-french.
Veuillez signaler toute erreur de traduction par un rapport de bogue sur
le paquet manpages-fr.
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
« man -L C <section> <page_de_man> ».
|