【发布时间】:2012-11-02 22:35:32
【问题描述】:
我尝试过实现一个操作系统程序。这是代码:
#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 部分,然后是子部分.....怎么会?
【问题讨论】:
-
If和else将在父子上下文中执行 -
如果你不懂 fork(),难道只有我一个人在思考“实现一个 os 程序”的智慧吗?
标签: c operating-system fork