Este não é o mesmo que alguns dos outros itens postados lidar com sub-processo IDPs (que eu vi anyway).
Se zot contém:
echo "mypid principais: $ $ - lastpid: $!"
(
echo "bloco mypid: $ $ - lastpid: $! - ppid: $ PPID"
ps-ef> xxx
sleep 5
echo "bloco mypid: $ $ - lastpid: $! - ppid: $ PPID"
) &
echo "mypid principais: $ $ - lastpid: $! - ppid: $ PPID"
sono 6
Então: ksh zot (sob Solaris e MKS) resulta em:
mypid principais: 7318 - lastpid:
bloco mypid: 7318 - lastpid: - ppid: 607
mypid principais: 7318 - lastpid: 7320 - ppid: 607
bloco mypid: 7318 - lastpid: - ppid: 607
Surpreende-me que, no processo bifurcadas criança, que ainda devolve o $ $ pid do processo principal. ou seja, tanto como mostram $ $ 7318 - eu teria esperado que a criança tem $ $ a $ 7320. (Você pode ignorar a ppid - Eu estava olhando noções relacionadas.)
Se você fizer: "grep 7320 xxx", você obtém:
root 7320 7318 0 13:59:45 pts / 9 0:00 ksh zot
root 7321 7320 1 13:59:45 pts / 9 0:00 ps-ef
que mostra claramente que a criança processo e se você fosse a "kill -9" pid que antes do 5 segundo se esgota, você não iria receber o segundo bloco linha.
A minha intenção era que a criança processo para gravar seus próprios pid-mãe em vez de fazê-lo em seu nome. Estou ciente de que a mãe pode usar $! mas porque a criança não pode usar $ $ para o seu próprio PID? Pela maneira, se você extrair o bloco de código e colocá-lo em um arquivo separado e chamá-lo, então você obtém os resultados esperados.
Agradeço antecipadamente por qualquer insights.
Michel