0

我知道如果我打电话fork()一次,父母会收到 child_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
4

2 回答 2

2

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

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

fork()
fork()

然后你必须区分:

Parent -> Child1 -> Grandchild
       -> Child2

因为在第一个叉子之后,第一个孩子会叉一个孙子。

或者,您可能意味着第二个分叉仅在父级中。在任何情况下,您都可以像第一个分叉一样区分第二个分叉的父子节点。

于 2013-10-12T14:46:30.360 回答
1

here is my code ; i need to calls another fork after the first one, then according if_conditions : print I am the child_1 process or I am the child_2 process or I am the parent ... hope it's clear now ;

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;
}
于 2013-10-12T18:10:22.793 回答