0
main(){
int child = fork();
int c = 5;
if(child == 0){
sleep(1000);
c += 5;
} else{
child = fork();
c += 10;
if(child)
c += 5;
}
}
我試過了什麼?在下面的代碼中,C可能的值是什麼?
IF和ELSE塊將並行執行。 因此,當控制進入IF塊時,孩子將進入睡眠狀態,但父母將開始執行並分爲2個進程,這兩個進程都執行C並使C = 15。現在,父進程只能輸入如果(子)使C = 20的值。
現在,子進程被喚醒,並使得c = 10. 因此,C的可能值是10,15,20。
我的理解是否正確?
我插入缺少'{'和'}':請回滾,如果我把它們放在不正確的地方。在此之前,你的代碼不會編譯。 – Bathsheba
它是10,15和20,'sleep()'與它無關。 –
但是在else塊中,fork和fork之後的父和子都會執行c + = 10,所以,這兩個值是否會相同? – Garrick