为什么此代码包含案例0和默认值?

时间:2017-09-23 14:23:05

标签: c linux

我不明白为什么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;
}

1 个答案:

答案 0 :(得分:2)

由于您正在创建一个新进程,因此代码会执行两次switch语句(在两个不同的进程中)。

假设您在fork()内使用create_process(),在父进程中,pid变量包含子PID(严格为正)。因此,交换机入口点是默认的。 在子进程中,pid为0,因此入口点为case 0。