获取当前 perl 脚本的进程 ID

获取当前 perl 脚本的进程 ID

如何获取正在运行当前脚本的 perl 进程的进程 ID? getppid() 不会返回与 ps -ea| grep 相同的 pid。有没有简单的方法,还是我只需在脚本中运行 ps -ea 命令并删除其他信息?

答案1

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

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

ians-imac:Documents ian$ perl test.pl 
42291

在另一个 shell 中:

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启用别名。

答案3

如果您最终在这里寻找$PID未定义的解决方案BEGIN { ... }POSIX::getpid()那么可以在这里工作。

相关内容