1
我無法弄清楚它是如何工作的。fork系統調用將父進程拆分爲兩個進程,它爲子進程返回零。根據我的輸出,子進程應該是glb = 101.var = 89。但是I我錯了。有人能解釋一下它的工作原理嗎?fork調用子進程和父進程之後,值之間會有什麼不同?
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int glb=100;
int main()
{
int pid;
int var =88;
printf ("Before Fork\n");
pid=fork();
if(pid <0)
{
perror("fork");
exit(1);
}
if(pid ==0) /**child**/
{
glb++;var++;
}
else
{
sleep(5);
}
printf("pid= %d,glb=%d,var=%d\n",getpid(),glb,var);
return 0;
}
適用於我的作品:'前叉' 'pid = 31955,glb = 101,var = 89' 'pid = 31954,glb = 100,var = 88'什麼輸出你是否意識到它不會? – dbush
對於孩子不輸出「glb = 101,var = 89」你錯了嗎?它確實輸出。 –
是的,現在它確實,我關閉了終端,並再次運行它現在它工作正常。但我有一個問題,他們是在增加訂單或可以改變也。謝謝。 – vish22