Provided by: manpages-ru-dev_4.21.0-2_all 

ИМЯ
getpid, getppid - получение идентификатора процесса
LIBRARY
Standard C library (libc, -lc)
СИНТАКСИС
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
ОПИСАНИЕ
Вызов getpid() возвращает идентификатор (PID) вызвавшего процесса (часто используется функциями, которые
генерируют уникальные имена временных файлов).
Вызов getppid() возвращает идентификатор процесса, являющегося родительским по отношению к вызвавшему
процессу. Результат равен идентификатору процесса, который создал этот процесс с помощью fork(), или
идентификатору процесса, который заместил родителя (или init(1), или процесс «сборщик», определённый с
помощью операции PR_SET_CHILD_SUBREAPER вызовом prctl(2)), если этот процесс уже завершён.
ОШИБКИ
Функции всегда завершаются успешно.
СТАНДАРТЫ
POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.
ЗАМЕЧАНИЯ
Если родитель вызывающего находит в другом пространстве имён PID (смотрите pid_namespaces(7)), то
getppid() возвращает 0.
Со стороны ядра PID (одинаков у всех нитей в многонитевом процессе) иногда называют идентификатором
группы нитей (TGID). Он отличается от идентификатора нити (TID), который является уникальным для каждой
нити. Подробней смотрите в gettid(2) и описание флага CLONE_THREAD в clone(2).
Отличия между библиотекой C и ядром
From glibc 2.3.4 up to and including glibc 2.24, the glibc wrapper function for getpid() cached PIDs,
with the goal of avoiding additional system calls when a process calls getpid() repeatedly. Normally
this caching was invisible, but its correct operation relied on support in the wrapper functions for
fork(2), vfork(2), and clone(2): if an application bypassed the glibc wrappers for these system calls by
using syscall(2), then a call to getpid() in the child would return the wrong value (to be precise: it
would return the PID of the parent process). In addition, there were cases where getpid() could return
the wrong value even when invoking clone(2) via the glibc wrapper function. (For a discussion of one
such case, see BUGS in clone(2).) Furthermore, the complexity of the caching code had been the source of
a few bugs within glibc over the years.
Because of the aforementioned problems, since glibc 2.25, the PID cache is removed: calls to getpid()
always invoke the actual system call, rather than returning a cached value.
На Alpha вместо пары системных вызовов getpid() и getppid() предоставляется один getxpid(), который
возвращает пару PID и родительский PID. Обёрточные функции glibc getpid() и getppid() скрывают это.
Подробности об отображении регистров смотрите в syscall(2).
СМ. ТАКЖЕ
clone(2), fork(2), gettid(2), kill(2), exec(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3),
credentials(7), pid_namespaces(7)
ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitry
Bolkhovskikh <d20052005@yandex.ru>, Vladislav <ivladislavefimov@gmail.com>, Yuri Kozlov
<yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>
Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3
или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.
Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо
на man-pages-ru-talks@lists.sourceforge.net.
Linux man-pages 6.03 22 января 2023 г. getpid(2)