我试过实现一个os程序。下面是代码:执行if/else if/else与fork()
#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
部分,然后是子部分.....怎么回事?
'如果'和'else'将在父母和子女的背景下执行 –
如果你不懂fork(),我是唯一一个在思考“实现os程序”的智慧的人吗? – Vicky