亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

Linux認(rèn)證

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

時(shí)間:2024-10-14 23:25:10 Linux認(rèn)證 我要投稿
  • 相關(guān)推薦

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

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

  }

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

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

如何避免數(shù)控機(jī)床出現(xiàn)的安全問(wèn)題?07-14

如何避免瑜伽傷害10-07

如何避免VLAN的弱點(diǎn)09-30

出現(xiàn)骨折如何護(hù)理06-22

避免談話(huà)出現(xiàn)僵局的3個(gè)技巧09-26

如何避免酒后駕車(chē)-避免酒后駕車(chē)的方法07-20

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

 如何避免早教誤區(qū)10-29

如何避免頁(yè)面優(yōu)化過(guò)度?08-13

如何避免上臺(tái)講話(huà)緊張07-14