bionic (2) setpgid.2.gz

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)