Отримання ідентифікатора процесу для поточного сценарію perl


11

Як отримати ідентифікатор процесу для процесу perl, який виконує поточний сценарій? getppid () не повертає той самий pid, як ps -ea | греп. Чи є простий спосіб чи я просто запускаю команду ps -ea в рамках свого сценарію і обрізаю інші відомості?


Ймовірно, слід перенести на stackoverflow.com
Ян C.

Відповіді:


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.