名 前
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/ に 書 か れ て い る 。