當前位置:編程學習大全網 - 編程軟體 - UNIX C編程高手幫忙看下,這個unix c程序最終怎麽成死循環了。

UNIX C編程高手幫忙看下,這個unix c程序最終怎麽成死循環了。

妳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;

}

修改後的運行結果如截圖:

  • 上一篇:推薦幾本好的vb入門到精通的書籍 謝謝
  • 下一篇:xtw100編程器如何連接usb線
  • copyright 2024編程學習大全網