Dies ist nicht das gleiche wie einige der anderen Artikel gepostet, die mit sub-Prozess PIDs (die ich sah sowieso).
Wenn Zot enthält:
echo "main mypid: $ $ - lastpid: $!"
(
echo "Block mypid: $ $ - lastpid: $! - PPID: $ PPID"
ps-ef> xxx
Schlaf 5
echo "Block mypid: $ $ - lastpid: $! - PPID: $ PPID"
) &
echo "main mypid: $ $ - lastpid: $! - PPID: $ PPID"
6 Personen
Dann: ksh Zot (unter Solaris und MKS) in:
wichtigsten mypid: 7318 - lastpid:
Block mypid: 7318 - lastpid: - PPID: 607
wichtigsten mypid: 7318 - lastpid: 7320 - PPID: 607
Block mypid: 7318 - lastpid: - PPID: 607
Es überrascht mich, dass in den zackigen Kind-Prozess, dass die $ $ noch liefert die PID der wichtigsten Prozess. dh beide $ $ als 7318 - ich hätte erwartet, das Kind zu haben, $ $ $ 7320 sein. (Sie können die PPID ignorieren - ich habe mich damit verbundenen Begriffe.)
Wenn Sie noch: "grep 7320 xxx" erhalten Sie:
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
, die eindeutig zeigt, das Kind und wenn Sie auf "kill -9" pid vor, dass die 5 Sekunden ausgeht, würden Sie nicht die zweite Block Linie.
Meine Absicht war für das Kind werden, um ihre eigenen PID nicht die Eltern tun es in ihrem Namen. Ich bin mir bewusst, dass die Muttergesellschaft können $! aber warum kann das Kind nicht mit $ $ für seine eigenen PID? Durch die Art und Weise, wenn Sie extrahieren den Block von Code und setzen Sie sie in einer separaten Datei und nennen es, dann erhalten Sie die erwarteten Ergebnisse.
Vielen Dank im Voraus für alle Erkenntnisse.
Michel