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


11

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


おそらくstackoverflow.comに移行する必要があります
Ian C.

回答:


13

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

または、その情報の公式オンライン版をご覧ください


2

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.