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.
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?
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.