2016-09-06 25 views
0

所以我想學習fork()調用,我老實說困惑於這個子進程和父進程是如何工作的。下面是部分代碼:printf()後fork()和條件只打印一次?

int main() 
{ 
    pid_t pid; 

    pid = fork(); 

    if (pid == 0) { 
     value = ChildProcess(value); 
     return 0; 
    } 
    else if (pid > 0) { 
     value = ParentProcess(value); 
    } 

    printf("\nThe value is %d",value); 
    return 0; 
} 

現在輸出應該給我父值和子值,因爲沒有wait()調用或者可以先打印父值或子值。但是我很困惑的是,爲什麼printf語句只能被打印一次?不應該打印兩次,因爲fork調用基本上創建了一個重複的程序?

回答

2

因爲您在調用ChildProcess之後從子進程返回,所以不要通過printf