2010-11-25 42 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) 

就是它了:)