web-dev-qa-db-ja.com

現在のPerlスクリプトのプロセスIDを取得する

現在のスクリプトを実行しているPerlプロセスのプロセスIDを取得するにはどうすればよいですか? getppid()はps -ea |と同じpidを返しませんgrep。簡単な方法はありますか、それともスクリプト内でps -eaコマンドを実行して、他の情報を削除するだけですか?

11
ageis23

$$を使用して、スクリプトを実行している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

またはその情報の公式オンラインバージョンを参照してください

12
Ian C.

Ianが述べている$$に加えて、私はコードを読みやすくすることのファンです。

そのため、Perlは、エイリアスを有効にする $PID の場合、ニーモニックuse Englishをサポートしています。

2
Randall