親プロセスの 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" のようなエラーが出力されますので注意してください。