我試過實現一個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