Получение идентификатора процесса для текущего сценария Perl


11

Как получить идентификатор процесса для процесса Perl, который выполняет текущий скрипт? getppid () не возвращает тот же pid, что и ps -ea | grep. Есть ли простой способ, или я просто запускаю команду ps -ea в моем скрипте и обрезаю другие части информации?


Вероятно, следует перенести на stackoverflow.com
Ян С.

Ответы:


13

Вы можете использовать $$для получения идентификатора процесса интерпретатора 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

Или посмотрите официальную онлайн-версию этой информации .


2

В дополнение к тому, $$что упоминает Ян, я поклонник того, чтобы сделать код более читабельным.

Для этого Perl поддерживает мнемонику, $PIDесли вы use Englishразрешите псевдонимы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.