setpgid

Autres langues

Langue: fr

Version: 20 janvier 2003 (mandriva - 01/05/08)

Section: 2 (Appels système)

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 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 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.

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(2) (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 getpgid() sont conformes à POSIX.1-2001. La fonction setpgrp() provient de BSD 4.2, et getpgid() de SVr4.

NOTES

Un processus fils créé avec fork(2) hérite du PGID de son père. Le PGID est préservé à travers un execve(2).

POSIX a défini setpgid() à partir de la fonction setpgrp() de BSD. Une fonction System 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), credentials(7), feature_test_macros(7)

TRADUCTION

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 27 novembre 2007.

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.