Bash分叉子壳

时间:2016-12-23 03:43:33

标签: linux bash shell fork

我有一个bash脚本,我想在forked进程中运行一些不相关的命令。这些命令只应在分叉进程中运行,而其他命令只应在父进程中运行。

echo "I am parent statement 1"
( echo "I am child statement 1"; echo "I am child statement 2"; sleep 30) &
echo "I am parent statement 2"

在这个例子中,父shell只输出'parent'语句,而child只回显'child statements'吗?或者孩子在回来后会回复父母陈述2吗?

同样,父母会等孩子(睡觉30)吗?或者父出口和孩子继续跑30秒?

1 个答案:

答案 0 :(得分:0)

每个进程只会运行自己的语句。

如果您稍微修改脚本,可以进行一项实验,证明该孩子比父母更长。

#!/bin/bash

echo "I am parent statement 1"
( echo "I am child statement 1"; echo "I am child statement 2"; sleep 30) &
jobs -l
echo "I am parent statement 2"
echo $$

如果您运行脚本然后为父母和孩子执行ps aux | grep <pid>,您将看到父母在孩子继续生命时已经死亡。