fork在for循環(huán)中的相關(guān)問(wèn)題

  • What will produce on your display this program. Why?
#include <stdio.h> 
int i;
int main() {
  for(i=0;i<2;i++){
    if(fork())
      fork();
  }
  printf ("%d\n", i);
  system ("echo i++");
}

以上這段代碼產(chǎn)生了9個(gè)進(jìn)程

第一個(gè)fork循環(huán)兩次會(huì)產(chǎn)生3個(gè)父進(jìn)程和3個(gè)子進(jìn)程

每個(gè)父進(jìn)程會(huì)執(zhí)行第二次fork產(chǎn)生一個(gè)父進(jìn)程和一個(gè)子進(jìn)程,一共3*2=6個(gè)父子進(jìn)程

加上之前fork的3個(gè)子進(jìn)程一共是9個(gè)進(jìn)程

#include <stdio.h> 
int i;
int main() {
  for(i=0;i<2;i++){
    fork();
      fork();
  }
  printf ("%d\n", i);
  system ("echo i++");
}

以上這段代碼產(chǎn)生了16個(gè)進(jìn)程,

1x2(第一次fork)x2(第二次fork)|(第一次循環(huán)結(jié)束)|

x2(第一次fork)x2(第二次fork) |第二次循環(huán)結(jié)束|

一個(gè)循環(huán)n次的fork會(huì)結(jié)束時(shí)會(huì)有2^n個(gè)的進(jìn)程(包含主進(jìn)程)

循環(huán)內(nèi)每多一個(gè)fork會(huì)多產(chǎn)生2^n倍進(jìn)程


  • 例如
for(int i=0;i<3;i++)
{
  fork();
  }
 system("echo +")

這段代碼會(huì)顯示8(2^3)個(gè)+
如果改成這樣

for(int i=0;i<3;i++)
{
  fork();
  fork();
  }
 system("echo +")

則會(huì)顯示8*8=64個(gè)+

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 引用:CSDN jason314 一、fork入門知識(shí) 一個(gè)進(jìn)程,包括代碼、數(shù)據(jù)和分配給進(jìn)程的資源。fork()函...
    _Nullptr閱讀 21,047評(píng)論 1 19
  • fork,vfork,cloneUnix標(biāo)準(zhǔn)的復(fù)制進(jìn)程的系統(tǒng)調(diào)用時(shí)fork(即分叉),但是Linux,BSD等操作...
    Albert陳凱閱讀 1,484評(píng)論 0 0
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,030評(píng)論 25 709
  • 蜘蛛說(shuō):“小蛤男,你也老大不小了,別天天惦記到我這來(lái)蹭網(wǎng),你到外面闖蕩一下,去干點(diǎn)正事。別讓你媽替你上火,行不?”...
    云淡風(fēng)輕之藍(lán)閱讀 854評(píng)論 52 39
  • 因?yàn)閶寢尯匣镒錾獾年P(guān)系,我倆經(jīng)常見(jiàn)面。 那時(shí)我大概3-4歲吧,你比我要大兩歲。印象中的你,個(gè)兒高高瘦瘦,臉頰深陷...
    臭屁文閱讀 364評(píng)論 0 1

友情鏈接更多精彩內(nèi)容