国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Linux之僵尸進(jìn)程
http://blog.csdn.net/yyyiran/article/details/19482525
2014.02

 * 僵尸進(jìn)程
子進(jìn)程結(jié)束,父進(jìn)程沒有正確處理子進(jìn)程返回信息。
PS:直到父進(jìn)程退出,子進(jìn)程變?yōu)楣聝哼M(jìn)程,其父進(jìn)程會變?yōu)镮nit進(jìn)程(PPID=0),Init進(jìn)程會負(fù)責(zé)清理僵尸進(jìn)程

* 危害
僵尸進(jìn)程沒有從進(jìn)程列表刪除,占據(jù)內(nèi)核資源

* 結(jié)論
多進(jìn)程編程,父進(jìn)程需要跟蹤子進(jìn)程的退出狀態(tài)

* 僵尸進(jìn)程查看方法:
1 top (zombie數(shù)量)
Tasks: 581 total, 1 running, 574 sleeping, 5 stopped, 1 zombie
2 ps -ef (defunct標(biāo)記)
1022 16123 16122 0 11:32 pts/12   00:00:00 [a.out] <defunct>

* 僵尸進(jìn)程處理方法:
當(dāng)子進(jìn)程結(jié)束,其會給父進(jìn)程發(fā)送SIGCHLD信號。
這時父進(jìn)程捕獲信號后可調(diào)用wait()或者waitpid()函數(shù)回收子進(jìn)程尸體
1 pid_t wait (int * status);
2 pid_t waitpid(pid_t pid,int * status,int options);
PS:使用waitpid就夠了,其為wait提供非阻塞功能
PS:也可簡單使用signal(SIGCHLD,SIG_IGN);這時內(nèi)核在子進(jìn)程結(jié)束不會產(chǎn)生僵尸進(jìn)程

* 編程例子
[cpp] view plain copy
  1. #include <iostream>  
  2. #include <stdlib.h>  
  3. #include <sys/types.h>  
  4. #include <sys/wait.h>  
  5. using namespace std;  
  6.   
  7. void OnSigChild(int iSig)  
  8. {  
  9.     pid_t iPid;  
  10.     int iStat;  
  11.     while ((iPid = waitpid(-1, &iStat, WNOHANG)) > 0)  
  12.     {  
  13.         cout << "<OnSigChild>, Pid=" << iPid << endl;  
  14.     }  
  15. }  
  16.   
  17. int main()  
  18. {  
  19.     signal(SIGCHLD, OnSigChild);  
  20.     if (!fork())  
  21.     {  
  22.         // Child  
  23.         cout << "Child:" << getpid() << endl;  
  24.         exit(0);  
  25.     }  
  26.   
  27.     // Parent  
  28.     while(1);  
  29.     return 0;  
  30. }     

* 其他補(bǔ)充

PS:子進(jìn)程未結(jié)束,而父進(jìn)程先結(jié)束了,子進(jìn)程PPID變?yōu)?(Init進(jìn)程)。這時ps -ef子進(jìn)程并不是僵尸態(tài) 
gapp_devnet_1:~ # ps -ef | grep 18849
UID        PID  PPID  C STIME TTY          TIME CMD
1022     18849     1  0 11:35 pts/12   00:00:00 ./a.out     
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
linux 如何殺死僵尸進(jìn)程——原理及操作
Linux下僵尸進(jìn)程的處理
如何查看并殺死僵尸進(jìn)程?
Ubuntu查找和殺死僵尸進(jìn)程
Linux的精靈(daemon)進(jìn)程和僵尸(zombie)進(jìn)程 (zz)
linux進(jìn)程狀態(tài)D和Z的處理 (轉(zhuǎn))
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服