Provided by: manpages-es_1.55-4_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  uti‐
        liza  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á  configu‐
        rada  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 ter‐
        minal 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.
        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.
        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.
        getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3)