2010-11-25 39 views
2

我學習,這是OS測驗,我不明白如果(叉())​​叉()

if(fork()) 
    fork() 

會產生什麼輸出。有人可以解釋嗎?

我不明白這行:

if(fork()) 

編輯:

我與「產出」的意思是許多進程將如何在那裏,如果沒有執行這個代碼。

對不起,我學習後有點頭暈。

+0

這將輸出...什麼也沒有。這個問題肯定包括一個printf或其他東西在叉後輸出? – ysth 2010-11-25 23:08:23

回答

10

這裏有一個提示:if (fork())是寫if (fork() != 0)的只是一小段路。

+0

Thank youoooouuouou !!! <3 <3 <3 <3 <3 xD – faris 2010-11-25 23:39:53

4

也許你最好只是嘗試一下,閱讀fork的documentation,然後,如果它仍然沒有意義,請問一個更具體的問題,你不明白哪個部分。

開始通過嘗試這樣的:

#include <stdio.h> 
#include <unistd.h> 
int main(int argc,char **argv){ 
    int x,y=0; 
    x = fork(); 
    if (x) y = fork(); 
    printf("x: %d, y: %d\n",x,y); 
    return 0; 
} 
2

我有和你一樣的問題。

的含義:::::>if (fork())

if (fork() !=0),如你所知:

  • fork():可以採取3個值!

  • fork() = 0給孩子。

  • fork() < 0錯誤。

  • fork() > 0 parent。

所以:

if (0 != O) ==>假的(在這種情況下,你沒有做2叉())

if (-123 != 0) ==>真(你)。

if (5 != 0) ==> true(是的,你有)。

好喜歡

0

if (fork()) is 

評爲

if(pid_of_child) 

和子進程被評價爲:

if(0) 

就是它了:)