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