Ottenere l'ID del processo per lo script perl corrente


11

Come posso ottenere l'ID processo per il processo perl che esegue lo script corrente? getppid () non restituisce lo stesso pid di ps -ea | grep. C'è un modo semplice o devo semplicemente eseguire il comando ps -ea all'interno del mio script e tagliare le altre informazioni?


Probabilmente dovrebbe essere migrato su stackoverflow.com
Ian C.

Risposte:


13

È possibile utilizzare $$per ottenere l'ID del processo dell'interprete perl che esegue lo script:

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

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

In un'altra 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

Per saperne di più sulle variabili speciali Perl:

perldoc perlvar

Oppure vedi la versione online ufficiale di tali informazioni .


2

Oltre a $$come menziona Ian, sono un fan del rendere il codice più leggibile.

A tal fine, Perl supporta il mnemonico $PIDse si use Englishdesidera abilitare gli alias.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.