我知道如果我打电话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
我知道如果我打电话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
我的问题是如果我有两个 fork() 调用,如何区分 child1 和 child2 以及 parent?
您需要发布实际代码,因为您的意思不明确。如果你的字面意思是这样的:
fork()
fork()
然后你必须区分:
Parent -> Child1 -> Grandchild
-> Child2
因为在第一个叉子之后,第一个孩子会叉一个孙子。
或者,您可能意味着第二个分叉仅在父级中。在任何情况下,您都可以像第一个分叉一样区分第二个分叉的父子节点。
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;
}