Como obter o pid do subprocesso do próprio subprocesso

1

Como posso obter um subprocesso do subprocesso em si?

  foo()
{
 echo pid=$$
 echo spid=$!
 echo bpid=$BASHPID
}

echo PARENT_PID=$$
foo &
wait

na primeira execução, recebo:

PARENT_PID=17112
[1]     17512
pid=17112
spid=
bpid=

Espero ver spid 17512

Na segunda corrida, recebo algo estranho:

PARENT_PID=17112
[1]     17797
pid=17112
spid=17512 #why I see here pid of previous subprocess???
bpid=

Espero ver 17797, mas obtendo 17512 !!

so 2 perguntas: 1) como obter o pid do subprocesso de dentro dele (vou executar o Foo várias vezes e esperar ver pid de cada subprocesso)?
2) por que estou obtendo o resultado inesperado da segunda execução?

    
por yuris 27.04.2016 / 16:20

1 resposta

1

O padrão POSIX define que $$ sempre é o pid do shell principal.

Se você executar um processo em segundo plano, $! retornará o pid do último processo em segundo plano.

    
por 27.04.2016 / 16:24

Tags