首先,这是一个家庭作业问题所以我不是在找人帮我解答。我只是希望能指出正确的方向。
我被赋予了使用c语言和命令fork()创建正好6个进程的任务,然后让所有6个进程休眠一两分钟。更难的部分是我们根本不允许使用任何循环,只有3次调用fork()。几乎所有关于fork和n个进程的信息都告诉用户使用for循环。我也在这里找到类似的东西,但是再次,for循环。
我成功创造了8个,但这太多了。所以我想知道是否有可能分叉或杀死特定进程。
例如:给定第一个fork,您将获得父进程和子进程。再次分叉,你有原来的父母有2个孩子,第一个孩子有一个孩子。那么fork()只能有一个孩子的原始孩子吗?我发现的所有内容似乎都表明,所有分叉进程执行fork调用后发生的任何事情,所以我不确定如何影响我需要做的事情。
答案 0 :(得分:6)
诀窍是使用fork
的返回值(< 0是一个错误,== 0是孩子而且> 0是父进程)让第一个孩子没有调用{{1得到3个进程:
fork
另一种可能性:
//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