2013-04-28 43 views
0

我正在學習套接字編程,並且我對c編程非常瞭解。管道,叉子和if語句的初學者問題

基於我的c編程知識,一旦處理inside else語句。 if語句中的進程不應該發生並且會被殺死。對於情況下,

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

基於上面的說法,一個等於1,所以過程1應該執行和過程2將不被執行。應該是正確的,我希望如此。

我的問題是下面的代碼

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 

我的問題是,爲什麼語句的結果如果和其他的顯示?

回答

1

您是否擡頭man fork()

父節點獲取子節點的PID(非零)並且子節點爲零,因此父節點正在運行if和子節點「other」的「一側」。

<編輯> 當然,-1返回(父)表示一個錯誤。

+0

這意味着,在我執行上面的代碼之後,兩個進程將在fork被調用時單獨運行。我對嗎? – edisonthk 2013-04-28 10:55:31

+0

準確地說:就像手冊頁說的一樣! – John3136 2013-04-28 10:56:30