getpid, getppid - プロセス ID を得る
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
getpid()
は呼び出し元のプロセスのプロセス
ID
を返す。(テンポラリ用のファイル名として
他と重ならない名前を生成するルーチンでしばしば使用される。)
getppid()
は呼び出し元のプロセスの親プロセスのプロセス
ID を返す。
これらの関数は常に成功する。
POSIX.1-2001, 4.3BSD, SVr4.
glibc バージョン 2.3.4
以降では、 glibc の
getpid()
のラッパー関数は PID
をキャッシュする。
これは、プロセスが繰り返し
getpid()
を呼び出した場合にその都度システムコールを呼ぶのを避けるためである。
通常は、このキャッシュ処理が見えることはないが、
キャッシュ処理が正しく働くためには
fork(2),
vfork(2),
clone(2)
のラッパー関数でのサポートが必要である。
アプリケーションがこれらのシステムコールを呼び出す際に、
glibc
のラッパー関数を経由せずに
syscall(2)
を使った場合には、子プロセスで
getpid()
を呼び出すと間違った値が返ることだろう
(正確にいうと、親プロセスの
PID が返される)。
clone(2) を
glibc
のラッパー関数経由で起動した際にも
getpid()
が間違った値を返す場合があり、これに関する議論は
clone(2)
も参照してほしい。
clone(2),
fork(2),
kill(2),
exec(3),
mkstemp(3),
tempnam(3),
tmpfile(3),
tmpnam(3),
credentials(7),
pid_namespaces(7)
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。