C 为什么此代码包含案例0和默认值?
我不明白为什么switch语句包含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();
案例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
。请参阅。您如何准确地知道它同时执行这两种情况?抱歉,我无法将我的全部代码放入框中。。。