我知道如果父母接收到child_id后我会调用fork()
,而孩子会收到0,如果是1则意味着失败。
我的问题是,如果我有两个fork()
来电,如何区分child1和child2以及父母?
我想:
fork1_id <0 || fork2_id < 0 >> fail
fork2_id==0 >> child2
fork1_id==fork2_id >> child1
else >> parent
答案 0 :(得分:2)
我的问题是,如果我有两个fork()调用,如何区分child1和child2以及parent?
您需要发布实际代码,因为它的含义模糊不清。如果你的字面意思是:
fork()
fork()
然后你必须区分:
Parent -> Child1 -> Grandchild
-> Child2
自从第一个分叉后,第一个孩子将分叉一个孙子。
或者,你可能意味着第二个分叉只在父代中。在任何情况下,您都可以用与第一个分叉相同的方式区分第二个分叉的父代和子代。
答案 1 :(得分:1)
这是我的代码;我需要在第一个之后调用另一个fork,然后根据if_conditions:print我是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;
}