getpid(2)

NOMBRE
getpid, getppid - obtiene el identificador de proceso

BIBLIOTECA
Biblioteca Estándar C (libc, -lc)

SINOPSIS
#include <unistd.h>

pid_t getpid(void);
pid_t getppid(void);

DESCRIPCIÓN
getpid devuelve el identificador de proceso (PID) del proceso actual. Esto suele ser usado por rutinas que generan nombres únicos de archivos temporales.

getppid() devuelve el ID de proceso del padre del proceso que realiza la llamada. Este será el ID del proceso que creó este proceso mediante fork() o bien, si dicho proceso ya ha finalizado, el ID del proceso al que se ha reubicado ya sea init(1) o un proceso «subreaper» definido mediante la operación PR_SET_CHILD_SUBREAPER de prctl(2).

ERRORES
Estas funciones siempre terminan sin error.

VERSIONES
En Alpha, en lugar de un par de llamadas al sistema getpid() y getppid(), se proporciona una única llamada al sistema getxpid(), que devuelve un par de PID y un PID padre. Las funciones contenedoras getpid() y getppid() de glibc gestionan esto de forma transparente. Consulte syscall(2) para más información sobre la asignación de registros.

ESTÁNDARES
POSIX.1-2008.

HISTORIAL
POSIX.1-2001, 4.3BSD, SVr4.

  Diferencias núcleo / biblioteca C
Desde glibc 2.3.4 hasta glibc 2.24 inclusive, la función contenedora de glibc para getpid() almacenaba en caché los PID, con el objetivo de evitar llamadas al sistema adicionales cuando un proceso invocaba getpid() repetidamente. Normalmente, este almacenamiento en caché era invisible, pero su correcto funcionamiento dependía de la compatibilidad con las funciones contenedoras de fork(2), vfork(2) y clone(2): si una aplicación omitía las funciones contenedoras de glibc para estas llamadas al sistema mediante syscall(2), una llamada a getpid() en el proceso hijo devolvería un valor incorrecto (más exactamente: devolvería el PID del proceso padre). Además, existían casos en los que getpid() podía devolver un valor incorrecto incluso al invocar clone(2) mediante la función contenedora de glibc. Puede consultarse una explicación de un caso de este tipo en el apartado ERRORES en clone(2). Además, la complejidad del código de caché había sido la fuente de algunos errores en glibc a lo largo de los años.

Debido a los problemas mencionados, desde la versión 2.25 de glibc se ha eliminado la caché PID: las llamadas a getpid() siempre invocan la llamada al sistema real, en lugar de devolver un valor almacenado en caché.

NOTAS
Si el antecesor del invocante está en un espacio de nombres diferente al PID (consulte pid_namespaces(7)), getppid() tendrá un estado de salida de 0.

Desde la perspectiva del núcleo, el PID (que comparten todos los hilos de un proceso multihilo) también se conoce como ID de grupo de hilos (TGID). Esto contrasta con el ID de hilo del núcleo (TID), que es único para cada hilo. Consulte gettid(2) y la explicación del indicador CLONE_THREAD en clone(2).

VÉASE TAMBIÉN
clone(2), fork(2), gettid(2), kill(2), exec(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3), credentials(7), pid_namespaces(7)

TRADUCCIÓN
La traducción al español de esta página del manual fue creada por Nicolás Lichtmaier <nick@debian.org>, Juan Piernas <piernas@ditec.um.es> y Marcos Fouces <marcos@debian.org>

Esta traducción es documentación libre; lea la GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.

Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a debian-l10n-spanish@lists.debian.org.