2013-04-28 114 views
1

我正在學習套接字編程,我很瞭解c編程。例如,根據我的c編程知識,一旦處理了else語句內的某些內容,就不會執行相應if語句中的代碼。例如,爲什麼if和else語句在單次運行時執行?

int a = 1; 
if(a == 1) process1 ; 
else process2; 

基於上面的說法,一個等於1,所以process1應執行和process2不會被執行。我相信這是正確的。

所示用下面的代碼我的問題:

int main(void){ 
    pid_t pid; 
    int pp[2]; 

    pipe(pp); 

    pid = fork(); 
    if(pid == 0){ 
     printf("Processed pid == 0\n"); 
    }else{ 
     printf("Processed pid != 0\n"); 
    } 

    return 0; 
} 

我得到下面的輸出,當我運行這個程序:

Processed pid == 0 
Processed pid != 0 

我的問題是,爲什麼結果既ifelse聲明如下所示?

回答

2

叉是用來創建一個新的過程。在舊進程中,它返回新進程的PID,並在新進程中返回0.每個輸出行由不同的進程打印。

http://linux.die.net/man/2/fork

爲了幫助您瞭解: 從你調用fork的那一刻()多了一個進程正在執行你寫的程序。爲了讓這兩個進程完成不同的事情,fork()在原始進程和重複進程中返回不同的值。正如我寫的,原始進程接收新進程的PID,這對於兩個進程之間的進一步通信非常有用。