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Ó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)

Linux                                             20 enero 2003                                       SETPGID(2)