以下代码中C的可能值是什么?

时间:2016-09-30 10:38:10

标签: operating-system fork

main(){
    int child = fork();
    int c = 5;
    if(child == 0){
       sleep(1000);
        c += 5;
    } else{
        child = fork();
        c += 10;
        if(child)
            c += 5;
    }
}

我尝试了什么?

IF和ELSE块将并行执行。 因此,当控制进入IF块时,孩子将进入睡眠状态,但父母将开始执行并分叉为2个进程,这两个进程都执行C并使C = 15.现在,父进程只能输入 If(child)并将使C = 20的值。

现在,Child进程唤醒,并使c = 10。 因此,C的可能值为10,15,20。

我的理解是否正确?

1 个答案:

答案 0 :(得分:1)

,C的可能值 10,15,20 。你的理解(推理)绝对正确。

您甚至可以通过执行此代码验证您的答案。

在我的笔记本电脑上输出:

5
15
20
15
10