getppid

親プロセスの ID を取得する

構文

解説

getppid は親プロセスのプロセス ID を返します。 次のサンプルコードは子プロセスで getppid の結果と $$ の値を出力します。 そして、子プロセスが終了後、親プロセスでも getppid の結果と $$ の値を出力します。 なお、$$ は自身のプロセス ID を返します。

# 子プロセスをフォーク
my $pid = fork();

# 子プロセスの処理
unless ($pid) {
    my $ppid = getppid();
    print 'Child: getppid=', $ppid, ', $$=', $$, "\n";
    sleep 1;
    exit 0;
}

wait;    # 子プロセスの終了を待つ

my $ppid = getppid();
print 'Parent: getppid=', $ppid, ', $$=', $$, "\n";

上記コードを実行すると、次のような結果が出力されます。

Child: getppid=89, $$=90
Parent: getppid=9, $$=89

子プロセスでの getppid の値 (89) と、 親プロセスでの $$ の値 (89) が一致していることが分かります。 なお、親プロセスでの getppid の値 (9) は、 このサンプルコードの呼び出し元のプロセスの ID を指しています。 主に Bash などのシェルを指すことになるでしょう。

getppid は Windows では利用できません。 "The getppid function is unimplemented" のようなエラーが出力されますので注意してください。