Obtendo o id do processo para o script perl atual

9

Como faço para obter o id do processo para o processo perl que está executando o script atual? getppid () não retorna o mesmo pid que ps -ea | grep.  Existe uma maneira fácil ou simplesmente executo o comando ps -ea dentro do meu script e retiro as outras informações?

    
por ageis23 18.10.2010 / 01:23

2 respostas

8

Você pode usar $$ para obter o ID do processo do interpretador perl executando seu script:

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

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

Em outro 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

Para saber mais sobre variáveis especiais Perl:

perldoc perlvar

Ou veja a versão online oficial dessa informação .

    
por 18.10.2010 / 01:38
1

Além de $$ como Ian menciona, sou fã de tornar o código mais legível.

Para esse fim, o Perl suporta o mnemônico $PID se você use English ativar os aliases.

    
por 18.05.2017 / 22:53

Tags