妳fork()壹個子進程,該子進程會開辟壹段新的內存單元,它對父進程的所有資源進行了拷貝,父進程先執行,打印father:aaaaa後跳出循環,而fork產生的子進程會執行child:100,由於子進程沒有跳出循環,子進程又會fork產生孫進程,然後子進程就變成孫進程的父進程,壹樣打印father:aaaaa後跳出循環,孫進程會執行child:100,如此重復,孫進程又產生曾孫進程.......(子子孫孫無窮潰也!)
如果修改壹下妳的代碼,就不會出現這種問題,如下:#include<unistd.h>
#include<stdio.h>
#include<stdlib.h>
int?main()
{
int?b=100;
char?c[10]="aaaaa";
while(1)
{
printf("begin...\n");
sleep(1);
if(fork()==0)
{
printf("child:%d\n",b);
getchar();
exit(0);
}else?
{
printf("father:%s\n",c);
sleep(1);
break;
}
}
return?0;
}
修改後的運行結果如截圖: