【问题标题】:fork() process ... I need help. I have the answers but I do not understand how it is done.fork() 过程...我需要帮助。我有答案,但我不明白它是如何完成的。
【发布时间】:2018-02-21 20:41:38
【问题描述】:

变量 x 有多少个不同的副本?当他们的过程完成时,他们的价值观是什么?

main (int argc, char ** argv){
    int child = fork()
    int x = 5; 

    if (child == 0) {
       x += 5;
    } else {
        child = fork();
        x += 10; 
        if(child) {
            x += 5;
        }
    }

}

我知道答案,但有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: unix process fork


    【解决方案1】:

    fork() 函数每次调用都会返回 2 次。 它创建了两个进程,将 0 返回给父进程,将另一个值返回给子进程。 这意味着将执行这两个条件。

    【讨论】:

      【解决方案2】:

      我不知道您是否正确地提出了您的问题,即 x 的副本(相对于地址空间的数量),但 fork 的工作原理如下:

      • 每次调用这个方法,都会为所有的人创建2个地址空间 下面的语句。

      • 在你的情况下:

        • 在“int child = fork()”之后,创建了 2 个地址空间,之后 “child = fork()”,只会为父级、父级执行 将进一步打破 2 个地址空间

        • 所以答案是 3

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多