Man page - getpid(2)

Packages contains this manual

Available languages:

en fr pl nl ja ru ro de

Manual

getpid

НАИМЕНОВАНИЕ
БИБЛИОТЕКА
ОБЗОР
ОПИСАНИЕ
ОШИБКИ
ВЕРСИИ
СТАНДАРТЫ
ИСТОРИЯ
Отличия между библиотекой C и ядром
ПРИМЕЧАНИЯ
СМОТРИТЕ ТАКЖЕ
ПЕРЕВОД

НАИМЕНОВАНИЕ

getpid, getppid - получение идентификатора процесса

БИБЛИОТЕКА

Стандартная библиотека языка C ( 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)), если этот процесс уже завершён.

ОШИБКИ

Функции всегда завершаются успешно.

ВЕРСИИ

На Alpha вместо пары системных вызовов getpid () и getppid () предоставляется один getxpid (), который возвращает пару PID и родительский PID. Обёрточные функции glibc getpid () и getppid () скрывают это. Подробности об отображении регистров смотрите в syscall (2).

СТАНДАРТЫ

POSIX.1-2008.

ИСТОРИЯ

POSIX.1-2001, 4.3BSD, SVr4.

Отличия между библиотекой 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.

ПРИМЕЧАНИЯ

Если родитель вызывающего находит в другом пространстве имён PID (смотрите pid_namespaces (7)), то getppid () возвращает 0.

Со стороны ядра PID (одинаков у всех нитей в многонитевом процессе) иногда называют идентификатором группы нитей (TGID). Он отличается от идентификатора нити (TID), который является уникальным для каждой нити. Подробней смотрите в gettid (2) и описание флага CLONE_THREAD в clone (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> и Kirill Rekhov <krekhov.dev@gmail.com>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков .