Как получить идентификатор процесса для процесса perl, который выполняет текущий скрипт? getppid() не возвращает тот же pid, что и ps -ea | grep. Есть ли простой способ, или я просто запускаю команду ps -ea в моем скрипте и обрезаю другие части информации?
9
2 ответа
8
Вы можете использовать $$
для получения идентификатора процесса интерпретатора Perl, выполняющего ваш скрипт:
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
1
В дополнение к $$
как упоминает Ян, я люблю делать код более читабельным.
Для этого Perl поддерживает мнемонический $PID
если вы use English
для включения псевдонимов.