Provided by: manpages-es_1.55-10_all bug

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)