Process 两个fork()调用?

Process 两个fork()调用?,process,system-calls,fork,Process,System Calls,Fork,我知道,如果我调用fork()一次,父对象将收到子对象id,而子对象将收到0,如果为-1,则表示失败 我的问题是,如果我有两个fork()调用,如何区分child1、child2和parent 我想: fork1_id <0 || fork2_id < 0 >> fail fork2_id==0 >> child2 fork1_id==fork2_id >> child1 else >> parent fork1\u id

我知道,如果我调用
fork()
一次,父对象将收到子对象id,而子对象将收到0,如果为-1,则表示失败

我的问题是,如果我有两个
fork()
调用,如何区分child1、child2和parent

我想:

fork1_id <0 || fork2_id < 0  >> fail
fork2_id==0   >> child2
fork1_id==fork2_id  >> child1 
else  >> parent
fork1\u id>失败
fork2_id==0>>child2
fork1\u id==fork2\u id>>child1
else>>父项
我的问题是,如果我有两个fork()调用,如何区分child1和child2以及parent

您需要发布实际的代码,因为您的意思不明确。如果你的字面意思是:

fork()
fork()
然后你必须区分:

Parent -> Child1 -> Grandchild
       -> Child2
因为在第一个叉之后,第一个孩子会叉孙子

或者,您可能意味着第二个fork只在父对象中。在任何情况下,您都可以用与第一个fork相同的方法来区分第二个fork的父级和子级

我的问题是,如果我有两个fork()调用,如何区分child1和child2以及parent

您需要发布实际的代码,因为您的意思不明确。如果你的字面意思是:

fork()
fork()
然后你必须区分:

Parent -> Child1 -> Grandchild
       -> Child2
因为在第一个叉之后,第一个孩子会叉孙子

或者,您可能意味着第二个fork只在父对象中。在任何情况下,您都可以用与第一个fork相同的方法来区分第二个fork的父级和子级

我的问题是,如果我有两个fork()调用,如何区分child1和child2以及parent

您需要发布实际的代码,因为您的意思不明确。如果你的字面意思是:

fork()
fork()
然后你必须区分:

Parent -> Child1 -> Grandchild
       -> Child2
因为在第一个叉之后,第一个孩子会叉孙子

或者,您可能意味着第二个fork只在父对象中。在任何情况下,您都可以用与第一个fork相同的方法来区分第二个fork的父级和子级

我的问题是,如果我有两个fork()调用,如何区分child1和child2以及parent

您需要发布实际的代码,因为您的意思不明确。如果你的字面意思是:

fork()
fork()
然后你必须区分:

Parent -> Child1 -> Grandchild
       -> Child2
因为在第一个叉之后,第一个孩子会叉孙子


或者,您可能意味着第二个fork只在父对象中。在任何情况下,您都可以使用与第一个fork相同的方法来区分第二个fork的父级和子级。

这是我的代码;我需要在第一个fork之后调用另一个fork,然后根据if_条件:print i是child_1进程或child_2进程或我是父进程。。。希望现在清楚了

int main()
{
pid_t childpid; 

childpid = fork();


    if (childpid == 0) 
    {
        printf("I am the child process!\n");

    }
    else if(childpid > 0) 
    {
        printf("I am the parent process!\n");
    }

else 
{
    perror("fork"); /* display error message */

}
return 0;
}

这是我的密码;我需要在第一个fork之后调用另一个fork,然后根据if_条件:print i是child_1进程或child_2进程或我是父进程。。。希望现在清楚了

int main()
{
pid_t childpid; 

childpid = fork();


    if (childpid == 0) 
    {
        printf("I am the child process!\n");

    }
    else if(childpid > 0) 
    {
        printf("I am the parent process!\n");
    }

else 
{
    perror("fork"); /* display error message */

}
return 0;
}

这是我的密码;我需要在第一个fork之后调用另一个fork,然后根据if_条件:print i是child_1进程或child_2进程或我是父进程。。。希望现在清楚了

int main()
{
pid_t childpid; 

childpid = fork();


    if (childpid == 0) 
    {
        printf("I am the child process!\n");

    }
    else if(childpid > 0) 
    {
        printf("I am the parent process!\n");
    }

else 
{
    perror("fork"); /* display error message */

}
return 0;
}

这是我的密码;我需要在第一个fork之后调用另一个fork,然后根据if_条件:print i是child_1进程或child_2进程或我是父进程。。。希望现在清楚了

int main()
{
pid_t childpid; 

childpid = fork();


    if (childpid == 0) 
    {
        printf("I am the child process!\n");

    }
    else if(childpid > 0) 
    {
        printf("I am the parent process!\n");
    }

else 
{
    perror("fork"); /* display error message */

}
return 0;
}

我没有投票将此作为“离题”来结束,因为关于
fork()
的问题在这里可以说是离题的,因为这是一个*nix问题。然而,我确实投票以“不清楚”结束了它(见我的答案)。我没有投票以“离题”结束它,因为关于
fork()
的问题在这里可以说是主题,因为它是一个*nix问题。然而,我确实投票以“不清楚”结束了它(见我的答案)。我没有投票以“离题”结束它,因为关于
fork()
的问题在这里可以说是主题,因为它是一个*nix问题。然而,我确实投票以“不清楚”结束了它(见我的答案)。我没有投票以“离题”结束它,因为关于
fork()
的问题在这里可以说是主题,因为它是一个*nix问题。然而,我确实投票以“不清楚”为由关闭了它(见我的答案)。