亚洲AV日韩AⅤ综合手机在线观看,激情婷婷久久综合色,欧美色五月婷婷久久,久久国产精品99久久人人澡

  • <abbr id="uk6uq"><abbr id="uk6uq"></abbr></abbr>
  • <tbody id="uk6uq"></tbody>
  • 如何避免出現(xiàn)僵尸進(jìn)程

    時間:2024-09-27 23:42:17 Linux認(rèn)證 我要投稿
    • 相關(guān)推薦

    如何避免出現(xiàn)僵尸進(jìn)程

      所謂僵尸進(jìn)程,就是指子進(jìn)程結(jié)束后,其實并沒有真正被銷毀,而是留下一個稱為僵尸進(jìn)程(Zombie)的數(shù)據(jù)結(jié)構(gòu),它幾乎放棄了所有內(nèi)存空間,沒有任何可執(zhí)行代碼,也不能被調(diào)度,僅僅在進(jìn)程列表中保留一個位置,記載進(jìn)程的退出狀態(tài)等供其他進(jìn)程搜集,此時即使用root身份kill -9也不能將其殺死,此時唯一的補救辦法就是找到它的父進(jìn)程,并將其殺死,此時僵尸進(jìn)程過繼給init,由init負(fù)責(zé)回收。那么怎樣用兩次fork來避免僵尸進(jìn)程呢

      #include

      #include

      #include

      #include

      #include

      int main()

      {

      pid_t pid;

      pid=fork();

      if(pid<0)

      {

      perror("child1 create failed\n");

      exit(-1);

      }

      else if(pid==0)

      {

      /*child1*/

      pid=fork();

      if(pid<0)

      {

      perror("child2 create failed\n");

      exit(-1);

      }

      else if(pid>0)

      {

      /*child1結(jié)束*/

      exit(0);

      }

      /*child2*/

      sleep(2);//因為不知道child1和child2哪個先執(zhí)行,所以讓child2先睡兩秒

      /*TODO child2*/

      exit(0);

      }

      /*parent*/

      if(waitpid(pid,NULL,0)!=pid) //wait for child1

      {

      perror("waitpid error\n");

      exit(-1);

      }

      /*TODO parent*/

      exit(0);

      }

      總的說來,其實就是父進(jìn)程parent創(chuàng)建一個子進(jìn)程child1,child1再創(chuàng)建它的子進(jìn)程child2,此時結(jié)束child1,child2就自然過繼給init啦,這樣以后無論怎樣,當(dāng)child2結(jié)束時直接就由init釋放,再也影響不到parent進(jìn)程了,也不可能會出現(xiàn)僵尸進(jìn)程啦

    【如何避免出現(xiàn)僵尸進(jìn)程】相關(guān)文章:

    如何避免數(shù)控機床出現(xiàn)的安全問題?10-25

    避免中考常出現(xiàn)的15個“意外”06-07

    如何避免蜘蛛陷阱06-14

    如何避免瑜伽傷害10-21

    避免談話出現(xiàn)僵局的3個技巧06-04

    如何避免酒后駕車-避免酒后駕車的方法08-22

    如何避免商品漏發(fā)08-09

    如何打高球避免高爾夫10-26

    如何避免汽車后視鏡盲區(qū)07-13

    如何避免孩子的起床氣?07-05