getpid(2)
получение идентификатора процесса
ОБЗОР
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
ОПИСАНИЕ
getpid() возвращает идентификатор вызвавшего процесса. (Часто
используется функциями, которые генерируют уникальные имена временных
файлов.)
getppid() возвращает идентификатор процесса, являющегося родительским по
отношению к вызвавшему процессу.
ОШИБКИ
Функции всегда завершаются успешно.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.
ЗАМЕЧАНИЯ
Если родитель вызывающего находит в другом пространстве имён PID (смотрите
pid_namespaces(7)), то
getppid() возвращает 0.
Отличия между библиотекой C и ядром
Начиная с glibc версии 2.3.4, обёрточная функция glibc для
getpid()
кэширует PID, чтобы избежать дополнительных системных вызовов, если процесс
постоянно вызывает
getpid(). Обычно это кэширование проходит незаметно,
но его правильная работа полагается на поддержку обёрточных функций для
fork(2),
vfork(2) и
clone(2): если приложение не использует
обёрточные функции glibc для этих системных вызовов и использует вместо них
syscall(2), то вызов
getpid() в потомке вернёт неправильное значение
(точнее, вернёт PID родительского процесса). Смотрите также в
clone(2)
обсуждение случая, когда
getpid() может вернуть неправильное значение
даже когда
clone(2) вызывается через обёрточную функцию glibc.