我试过实现一个操作系统程序。这是代码:
#include<sys/types.h>
#include<stdio.h>
#include<unistd.h>
int main()
{
pid_t pid, pid1;
pid = fork();
if(pid<0)
{
fprintf(stderr,"Fork Failed");
return 1;
}
else if(pid == 0) /* child process */
{
pid1 = getpid();
printf("child: pid = %d\n",pid);
printf("child: pid1 = %d\n",pid1);
}
else /* parent process */
{
pid1 = getpid();
printf("parent: pid = %d\n",pid);
printf("parent: pid1 = %d\n",pid1);
}
return 0;
}
及其o/p:
parent: pid = 1836
parent: pid1 = 1835
child: pid = 0
child: pid1 = 1836
有人可以解释一下它是如何工作的,即代码中编写的 // 语句的if
执行顺序else-if
。else
我认为一旦else if
条件变为真else
,则不执行部分,但是在这里它已经执行了父进程部分,即else
部分,然后是子部分.....怎么会?