【问题标题】:What is the number of processes that the following code will create?以下代码将创建多少个进程?
【发布时间】: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


【解决方案1】:
We have to validate fork return values. Actually based on return only we can able to check no of process on your program.


fork Return Value :

-1                  => Failure.
0                   => Return value for child process.
Child process id    => Return value for parent process.

【讨论】:

    猜你喜欢
    • 2017-03-06
    • 2020-02-05
    • 2020-10-19
    • 2014-07-08
    • 1970-01-01
    • 2022-10-02
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多