Provided by:
manpages-es_1.55-10_all 
NOMBRE
setpgid, getpgid, setpgrp, getpgrp - obtener/establecer el grupo de
procesos
SINOPSIS
#include <unistd.h>
int setpgid(pid_t pid, pid_t pgid);
pid_t getpgid(pid_t pid);
int setpgrp(void);
pid_t getpgrp(void);
DESCRIPCI'ON
setpgid pone el ID del grupo del proceso especificado por pid a pgid.
Si pid es cero, se emplea el PID del proceso en curso. Si pgid es cero,
se emplea el PID del proceso especificado por pid. Si setpgid se
utiliza para mover un proceso de un grupo de procesos a otro (como
hacen algunos shells cuando crean tuberias), ambos grupos de procesos
deben formar parte de la misma sesion. En este caso, pgid especifica el
grupo de procesos existente en el que vamos a entrar, y el ID de sesion
de ese grupo de procesos debe coincidir con el ID de sesion del proceso
que quiere entrar.
getpgid devuelve el ID del grupo de proceso del especificado por pid.
Si pid es cero, se emplea el PID del proceso en curso.
La llamada setpgrp() es equivalente a setpgid(0,0).
De manera similar getpgrp() es equivalente a getpgid(0). Cada grupo de
procesos es miembro de una sesion y cada proceso es miembro de la
sesion de la que su grupo de procesos es miembro.
Los grupos de proceso se emplean para la distribucion de senales, y por
las terminales para arbitrar peticiones para su entrada: los procesos
que tienen el mismo grupo de proceso que la terminal son en primer
plano y pueden leer, mientras que otros se bloquearan con una senal si
intentan leer.
Estas llamadas se usan pues por programas como csh(1) para crear grupos
de proceso cuando implementan el control de trabajos. Las llamadas
TIOCGPGRP y TIOCSPGRP descritas en termios(3) se emplean para
obtener/poner el grupo de proceso de la terminal de control.
Si una sesion posee una terminal controladora, CLOCAL no esta
configurada y si se cierra la sesion, entonces se enviara una senal
SIGHUP al lider de sesion. Si el lider de sesion existe, se enviara la
senal SIGHUP a cada proceso del grupo de procesos en primer plano de la
terminal controladora.
Si la terminacion del proceso hace que un grupo de procesos se quede
huerfano y si cualquier miembro del grupo de procesos que se acaba de
quedar huerfano se detiene, entonces se enviara una senal SIGHUP
seguida de una senal SIGCONT a cada proceso en el grupo de procesos que
se acaba de quedar huerfano.
VALOR DEVUELTO
En caso de exito, setpgid y setpgrp devuelven cero. En caso de error.
devuelven -1 y ponen un valor apropiado en errno.
getpgid devuelve un grupo de proceso si acaba bien; -1 en caso de
error, y pone un valor apropiado en errno.
getpgrp siempre devuelve el grupo de proceso actual.
ERRORES
EINVAL pgid es menor que 0 (setpgid, setpgrp).
EACCES Se intento cambiar el identificador de grupo de procesos de uno
de los hijos del proceso invocador y el proceso hijo ya habia
realizado una llamada a execve (setpgid, setpgrp).
EPERM Se intento cambiar el grupo de procesos de un proceso a otro
grupo en una sesion diferente, o cambiar el identificador de
grupo de procesos de uno de los hijos del proceso invocador
estando el proceso hijo en una sesion diferente, o cambiar el
identificador de grupo de procesos de un lider de sesion
(setpgid, setpgrp).
ESRCH Para getpgid: pid no concuerda con ningun proceso. Para
setpgid: pid no se corresponde con el proceso actual ni con uno
de sus hijos.
CONFORME A
Las funciones setpgid y getpgrp siguen el estandar POSIX.1. La funcion
setpgrp es de BSD 4.2. La funcion getpgid conforma con SVr4.
OBSERVACIONES
POSIX tomo setpgid de la funcion BSD setpgrp. SysV tambien tiene una
funcion con el mismo nombre, pero es identica a setsid(2).
Para obtener los prototipos bajo glibc, debe definir tanto
_XOPEN_SOURCE como _XOPEN_SOURCE_EXTENDED, o usar "#define
_XOPEN_SOURCE n" para algun entero n mayor o igual a 500.
V'EASE TAMBI'EN
getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3)