現在のスクリプトを実行しているPerlプロセスのプロセスIDを取得するにはどうすればよいですか? getppid()はps -ea |と同じpidを返しませんgrep。簡単な方法はありますか、それともスクリプト内でps -eaコマンドを実行して、他の情報を削除するだけですか?
$$
を使用して、スクリプトを実行しているPerlインタープリターのプロセスIDを取得できます。
iancs-iMac:Documents ian$ cat test.pl
print "$$\n";
sleep(10000);
exit()
ians-iMac:Documents ian$ Perl test.pl
42291
別のシェルで:
iancs-iMac:~ ian$ Sudo ps -ef | grep Perl
501 42291 42281 0 0:00.00 ttys000 0:00.01 Perl test.pl
501 42297 42280 0 0:00.00 ttys001 0:00.00 grep Perl
特別なPerl変数についてさらに学ぶには:
perldoc perlvar
Ianが述べている$$
に加えて、私はコードを読みやすくすることのファンです。
そのため、Perlは、エイリアスを有効にする $PID
の場合、ニーモニックuse English
をサポートしています。