How to get PID from forked child process in shell script
52,949
Solution 1
The PID of a backgrounded child process is stored in $!
.
fpfunction &
child_pid=$!
parent_pid=$$
For the reverse, use $PPID
to get the parent process's PID from the child.
fpfunction() {
local child_pid=$$
local parent_pid=$PPID
...
}
Also for what it's worth, you can combine the looping statements into a single C-like for loop:
for ((n = 1; n < 20; ++n)); do
do
echo "Hello World-- $n times"
sleep 2
echo "Hello World2-- $n times"
done
Solution 2
From the Bash manual:
!
Expands to the process ID of the most recently executed background (asynchronous) command.
i.e., use $!
.
Author by
Sam
Updated on December 15, 2020Comments
-
Sam over 3 years
I believe I can fork 10 child processes from a parent process.
Below is my code:
#/bin/sh fpfunction(){ n=1 while (($n<20)) do echo "Hello World-- $n times" sleep 2 echo "Hello World2-- $n times" n=$(( n+1 )) done } fork(){ count=0 while (($count<=10)) do fpfunction & count=$(( count+1 )) done } fork
However, how can I get the pid from each child process I just created?