Provided by: manpages-ru-dev_4.19.0-7_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 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.