如何获取正在运行当前脚本的 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()
那么可以在这里工作。