- 論壇徽章:
- 0
|
/*name*/
int main()
{pid_t pc;
pc=fork();
if(pc==0) printf(“value is %d\n child process\nmy pid is %d\n",pc,getpid()));
else if(pc>0) printf(“value is %d\n father process\nmy pid is %d\n",pc,getpid());
}
問題:
1.當(dāng)執(zhí)行這個程序時,即執(zhí)行name程序時,是不是就是一個進(jìn)程的開始? 這個是不是就是父進(jìn)程?
2.當(dāng)程序運(yùn)行到 pc=fork();時,新創(chuàng)建的這個進(jìn)程在這個時候應(yīng)該是子進(jìn)程還是父進(jìn)程?
3.這個例子是書中的一個簡化例,書中給出的結(jié)果是(只執(zhí)行一次程序):
value is 76
father process
my pid is 75
value is 0
child process
my pid is 76
從結(jié)果看value is 76 ,father process 似乎是pc=fork()創(chuàng)建了一個父進(jìn)程,子進(jìn)程號是76,父進(jìn)程號是75,這時if語句應(yīng)該執(zhí)行完畢,程序跳出才對,怎么從結(jié)果
看似乎是程序緊接著又執(zhí)行了一遍,這是怎么回事?難道是因為沒有進(jìn)程退出exit()函數(shù),name一直在運(yùn)行嗎? |
|