获取当前 perl 脚本的进程 ID

age*_*s23 13 perl

如何获取运行当前脚本的 perl 进程的进程 ID?getppid() 不返回与 ps -ea| 相同的 pid 格雷普。有没有一种简单的方法,或者我只是在我的脚本中运行 ps -ea 命令并修剪掉其他信息?

Ian*_* C. 14

您可以使用$$来获取运行脚本的 perl 解释器的进程 ID:

iancs-imac:Documents ian$ cat test.pl 
print "$$\n";
sleep(10000);
exit()

ians-imac:Documents ian$ perl test.pl 
42291
Run Code Online (Sandbox Code Playgroud)

在另一个外壳中:

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
Run Code Online (Sandbox Code Playgroud)

要了解有关特殊 Perl 变量的更多信息:

perldoc perlvar
Run Code Online (Sandbox Code Playgroud)

或者看那个信息的官方网络版