Provided by: manpages-es_1.55-8_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ÓN

       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 tuberías), ambos grupos  de  procesos
       deben formar parte de la misma sesión. En este caso, pgid especifica el
       grupo de procesos existente en el que vamos a entrar, y el ID de sesión
       de ese grupo de procesos debe coincidir con el ID de sesión 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 sesión y  cada  proceso  es  miembro  de  la
       sesión de la que su grupo de procesos es miembro.

       Los grupos de proceso se emplean para la distribución de señales, 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 bloquearán con una señal  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  sesión  posee  una  terminal  controladora,  CLOCAL  no   está
       configurada  y  si  se  cierra la sesión, entonces se enviará una señal
       SIGHUP al lider de sesión. Si el lider de sesión existe, se enviará  la
       señal SIGHUP a cada proceso del grupo de procesos en primer plano de la
       terminal controladora.

       Si la terminación del proceso hace que un grupo de  procesos  se  quede
       huérfano  y  si cualquier miembro del grupo de procesos que se acaba de
       quedar huérfano se  detiene,  entonces  se  enviará  una  señal  SIGHUP
       seguida de una señal SIGCONT a cada proceso en el grupo de procesos que
       se acaba de quedar huérfano.

VALOR DEVUELTO

       En caso de éxito, 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 intentó cambiar el identificador de grupo de procesos de  uno
              de  los  hijos  del proceso invocador y el proceso hijo ya había
              realizado una llamada a execve (setpgid, setpgrp).

       EPERM  Se intentó cambiar el grupo de procesos de  un  proceso  a  otro
              grupo  en  una  sesión  diferente, o cambiar el identificador de
              grupo de procesos de uno de  los  hijos  del  proceso  invocador
              estando  el  proceso  hijo en una sesión diferente, o cambiar el
              identificador de  grupo  de  procesos  de  un  líder  de  sesión
              (setpgid, setpgrp).

       ESRCH  Para  getpgid:  pid  no  concuerda  con  ningún  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 estándar POSIX.1.  La función
       setpgrp es de BSD 4.2.  La función getpgid conforma con SVr4.

OBSERVACIONES

       POSIX tomó setpgid de la función BSD setpgrp.  SysV también  tiene  una
       función con el mismo nombre, pero es idéntica 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 algún entero n mayor o igual a 500.

VÉASE TAMBIÉN

       getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3)