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。
我的理解是否正确?
答案 0 :(得分:1)
是,C的可能值 10,15,20 。你的理解(推理)绝对正确。
您甚至可以通过执行此代码验证您的答案。
在我的笔记本电脑上输出:
5
15
20
15
10