我怎样才能准确分叉6个进程

KM5*_*529 1 c fork process

首先,这是一个家庭作业问题所以我不是在找人帮我解答.我只是希望能指出正确的方向.

我被赋予了使用c语言和命令fork()创建正好6个进程的任务,然后让所有6个进程休眠一两分钟.更难的部分是我们根本不允许使用任何循环,只有3次调用fork().几乎所有关于fork和n个进程的信息都告诉用户使用for循环.我也在这里找到类似的东西,但是再次,循环.

我成功创造了8个但是太多了.所以我想知道是否有可能分叉或杀死特定进程.

例如:给定第一个fork,您将获得父进程和子进程.再次分叉,你有原来的父母有2个孩子,第一个孩子有一个孩子.那么fork()只能有一个孩子的原始孩子吗?我发现的所有东西似乎都说在fork调用之后发生的任何事情都是由所有分叉进程执行的,所以我不确定如何影响我需要做的事情.

mch*_*mch 6

诀窍是使用返回值fork(<0是一个错误,== 0是子进程,> 0是父进程)让第一个子fork进程不调用以获得3个进程:

//we start with 1 process
if (fork() > 0) //now we have 2 processes
    fork(); //only the parent calls this fork because of the if, so we have 3 processes
fork(); //all 3 processes calls this fork, so we have 6 processes
Run Code Online (Sandbox Code Playgroud)

另一种可能性

fork(); //2
if (fork() > 0) //4
    fork(); //only the 2 parents from the second call will call this ==> 6
Run Code Online (Sandbox Code Playgroud)