在shell脚本中通过fork()创建一个子进程的父进程

6

我看到网站上有一些答案,但它们似乎不能解决我的问题。

比如说,

#/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

我希望将这个父进程“fork”出10个子进程。

我检查这些子进程是否真正创建的方法是输入“ps -l”命令。

我是一个shell世界的新手,请告诉我如何实现这个目标。

提前感谢您的帮助。

1个回答

11

在命令后面加上 & 符号,会在一个新的子shell中运行它。

fpfunction &

谢谢,我看到了这篇帖子。我确实添加了fpfunction &,并且函数确实被执行。然而,当我检查“ps -l”命令时,似乎没有任何变化。我原本期望这个命令会显示我从父进程分叉出来的子进程。 - Sam
fpfunction 不是一个命令,它是一个 shell 函数。因此,在 ps 中显示的是 shell。 - Ignacio Vazquez-Abrams
我刚刚编辑了我的shell。可以执行fork函数,但是我不明白你所说的“将出现在ps中的shell”是什么意思。 - Sam
那是因为你忘记了读取它之前的位。 - Ignacio Vazquez-Abrams

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接