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

C 为什么此代码包含案例0和默认值?,c,linux,C,Linux,我不明白为什么switch语句包含案例0:和默认值: int main(void) { pid_t pid = create_process(); switch (pid) { case -1: perror("fork"); return EXIT_FAILURE; break; case 0: child_process();

我不明白为什么switch语句包含
案例0:
默认值:

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;
}

因为您正在创建一个新进程,所以代码将执行switch语句两次(在两个不同的进程中)

假设您在
create_process()
内部使用
fork()
,则在父进程中,
pid
变量包含子pid(严格为正值)。因此,开关入口点是默认的。
在子进程中,
pid
为0,因此入口点为案例0。

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

假设您在
create_process()
内部使用
fork()
,则在父进程中,
pid
变量包含子pid(严格为正值)。因此,开关入口点是默认的。
在子进程中,
pid
为0,因此入口点为案例0。

返回语句后不需要
break
,我在linux手册页中找不到
create\u进程
,但我假设
pid
可以是任何值,并标识系统中进程的系统pid,因此将执行
默认值
。请参阅。您如何准确地知道它同时执行这两种情况?抱歉,我无法将我的全部代码放入框中…您不需要在返回语句后使用
中断
。我在linux手册页中找不到
创建过程
,但是我假设
pid
可以是任何值,并标识系统中进程的系统pid,因此执行
default
。请参阅。您如何准确地知道它同时执行这两种情况?抱歉,我无法将我的全部代码放入框中。。。