我不明白为什么switch语句包含case 0:
和default:
?
int main(void)
{
pid_t pid = create_process();
switch (pid)
{
case -1:
perror("fork");
return EXIT_FAILURE;
break;
case 0:
child_process();
break;
default:
father_process(pid);
break;
}
return EXIT_SUCCESS;
}
答案 0 :(得分:2)
由于您正在创建一个新进程,因此代码会执行两次switch语句(在两个不同的进程中)。
假设您在fork()
内使用create_process()
,在父进程中,pid
变量包含子PID(严格为正)。因此,交换机入口点是默认的。
在子进程中,pid
为0,因此入口点为case 0。