处理不放弃孩子的pid

时间:2014-06-26 14:21:02

标签: multithreading bash

我想要孩子和父母的pid。所以我这样做:

function x { echo $1 $$; }

现在,当我执行以下操作时,我希望函数x具有父子pids:

x $$ &

但是,x只有父pid。如何让函数作为单独的进程运行?

2 个答案:

答案 0 :(得分:2)

我相信您正在寻找$BASHPID

#! /bin/bash

function x { echo $$  $BASHPID;}

x & child=$!; wait ; echo $child

输出:

bash  test.sh 
1191 1195
1195

答案 1 :(得分:0)

看起来与$$的范围有关,它在启动脚本时已经被全局评估。该功能肯定在一个单独的过程中运行。您可以使用$!

获取孩子的PID
function x { 
   echo $1 $$; 
}

x $$ &
echo "forked process: $!"