【发布时间】:2017-06-18 08:36:55
【问题描述】:
以下代码生成的进程总数是多少?
if(fork() && fork()){
fork();
}
if(fork() ||fork()){
fork();
fork();
}
AND 将表现为短路运算符,因此第二个分叉只会为父级而不是子级执行。之后如何进行?
【问题讨论】:
-
绘制一个图,每个进程生成一个正方形。
-
我们不是测验网站。说明您的问题、您的期望以及原因。
-
请注意,如果
fork()返回-1,这在C 中也是如此。 -
绘制一个有向图,将开始、分叉和结束表示为节点,将执行路径表示为加权边,权重是遵循该路径的进程数。 “start”节点有一个权重为 1 的输出边。“fork”节点有一个或多个输入边和两个输出边。将每个输出边的权重设置为输入边的权重之和。 'end' 节点有一个或多个输入边。 'end' 处输入边的权重之和是进程的总数。减 1 得到衍生进程的数量(不包括原始进程)。
标签: c linux operating-system fork