Manual del Programador de Linux (2)
2 septiembre 1999
 

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.

En la biblioteca DLL 4.4.1 de Linux, setpgrp simplemente llama a setpgid(0,0).

getpgrp equivale 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(4) 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.
EPERM
Violaciones de permisos variadas.
ESRCH
pid no concuerda con ningún proceso.
 

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.  

VÉASE TAMBIÉN

getuid

(2), setsid(2), tcsetpgrp(3), termios(4)

Nuevo comentario