getpid

GETPID(2)       Ð ÑководÑÑво пÑогÑаммиÑÑа Linux       GETPID(2)



ÐÐЯ
       getpid, getppid - полÑÑение иденÑиÑикаÑоÑа
       пÑоÑеÑÑа

ÐÐÐÐÐ
       #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.

СÐÐТРÐТРТÐÐÐÐ
       clone(2), fork(2), kill(2), exec(3), mkstemp(3), tempnam(3),
       tmpfile(3), tmpnam(3), credentials(7), pid_namespaces(7)



Linux                             2015-07-23                         GETPID(2)