日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux / 僵尸进程、孤儿进程 产生原因、有什么危害、如何预防(解决方案)

發布時間:2024/10/14 linux 89 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux / 僵尸进程、孤儿进程 产生原因、有什么危害、如何预防(解决方案) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@time 2019-07-12 @author Ruo_Xiao

一、產生原因

1、僵尸進程

子進程退出,父進程運行,父進程沒有調用 wait 或者 waitpid 函數,那么子進程就處于僵尸狀態(Z)。

2、孤兒進程

子進程運行,父進程退出,孤兒進程由?init 進程收養,此時子進程就變成了孤兒進程。

3、系統為什么需要僵尸進程這種進程狀態

由于父進程創建子進程是異步的,雙方不知道各自的運行狀態,而父進程有的時候需要知道子進程退出時的一些信息,所以 linux 提供了一種機制,通過讓子進程退出時向父進程發送 SIGCHRD 信號來告知父進程,子進程已經退出了。同時,父進程通過調用 wait 和 waitpid 來獲取子進程的退出信息。

二、有什么危害

1、僵尸進程

有很大危害。因為僵尸進程已經挺尸了,對系統沒有什么作用,但是依然在進程表占了位置,如果 os 有大量的僵尸進程,那么進程號就會被大量無故占用,嚴重的話再次 fork 進程可能失敗。

2、孤兒進程

沒什么危害。因為該進程只是父進程換成了 init ,依然可以正常運行。

三、如何預防(解決方案)

1、kill 父進程

kill 父進程之后,僵尸進程會變成孤兒僵尸進程,由?init 收養,通過 init 是循環 wait ,從而讓子進程徹底退出。

2、注冊 SIGCHRD 信號的信號處理函數,在函數中調用 wait(調用者堵塞) 或者 waitpid(可以配置調用者不堵塞) 。

3、fork 兩次,創建子進程,子進程在創建孫進程,最后 kill 子進程,那么孫進程就由 init 收養。

栗子:

#include <iostream> #include <signal.h> #include <stdlib.h> #include <unistd.h> #include <sys/wait.h> #include <sys/types.h>void signalproc(int isig) {int istatus;waitpid(SIG_BLOCK, &istatus, WNOHANG); }int main() {signal(SIGCHLD, signalproc);pid_t pid;int r = fork();if (r < 0)std::cout << "創建進程失敗!" << std::endl;else if (r == 0){std::cout << "子進程開始運行!" << std::endl;int r1 = fork();if (r < 0)std::cout << "創建孫進程失敗!" << std::endl;else if (r1 == 0){std::cout << "孫進程開始運行,并進入循環!" << std::endl;while (true){std::cout << "Sun" << std::endl;sleep(1);}}std::cout << "子進程退出" << std::endl;exit(0);}std::cout << "父進程開始進入循環!" << std::endl;while (true){std::cout << "parent" << std::endl;sleep(1);}return 0; }

結果:

父進程開始進入循環! parent 子進程開始運行! 子進程退出 孫進程開始運行,并進入循環! Sun parent Sun parent Sun parent Sun parent

輸入指令:

ps -eo pid,ppid,sid,comm,stat | grep -E 'bash|fork'

?結果:

13997 2539 13997 bash Ss 15816 2539 15816 bash Ss 15939 15816 15816 forktest S+ 15941 1210 15816 forktest S+

注意:

由于我的系統是 ubuntu 18.04,所以 forktest 的孫進程的父進程是 1210,不是 init 。1210 進程是 systemd 進程,該進程的具體含義后續有時間會說明

?

?

(SAW:Game Over!)

總結

以上是生活随笔為你收集整理的Linux / 僵尸进程、孤儿进程 产生原因、有什么危害、如何预防(解决方案)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩福利网 | 亚洲精品字幕 | 四虎av网址 | 成人自拍视频网站 | 欧美 亚洲 一区 | 激情五月婷婷综合网 | 麻豆精品视频 | 99热国产精品 | 91久久伊人 | 免费看黄色一级视频 | 国产精品精品久久久久久 | 超碰免费97 | 国产精品久久久午夜夜伦鲁鲁 | 成人免费看片网站 | 热热久 | 色爱av综合 | 看黄色小视频 | 韩国禁欲系高级感电影 | xxx性欧美 | 黄色不打码视频 | 亚洲美免无码中文字幕在线 | 天天射天天操天天干 | 久久狠| 久久久精品视频网站 | 无码精品人妻一区二区 | 蜜桃tv一区二区三区 | 成人在线视屏 | 围产精品久久久久久久 | 久久久精品在线 | 国产小视频在线免费观看 | 粉嫩aⅴ一区二区三区四区五区 | 色网导航站 | 亚洲精品网站在线观看 | 亚洲精品一区二区18漫画 | 国产精品一区一区三区 | 久久久成人免费视频 | jizz日韩| 轻轻色在线观看 | 国产日韩欧美日韩大片 | 丝袜熟女一区二区三区 | 亚洲aaa级| 人妖天堂狠狠ts人妖天堂狠狠 | 国产裸体视频 | 91久久精品夜夜躁日日躁欧美 | 打屁股无遮挡网站 | 久久a毛片 | 青青草综合在线 | www.在线国产| 卡一卡二在线视频 | 九九黄色大片 | 国内精品免费视频 | 日韩欧美大片在线观看 | 三上悠亚亚洲一区 | 欧美成本人视频 | 国产精品久久久 | 性欧美lx╳lx╳ | 国产成人精品一区二区三区网站观看 | 小毛片在线观看 | 免费黄色网址大全 | 天躁夜夜躁狼狠躁 | 三区在线观看 | 国产综合一区二区 | 亚洲一区av在线 | 欧美一区2区 | 性欧美18一19性猛交 | 麻豆免费在线观看视频 | av怡红院 | 伊人婷婷在线 | 三年大片在线观看 | 全国男人的天堂网 | 日本在线免费播放 | 毛片a片免费看 | 日本少妇久久久 | 黄色三级网站在线观看 | 成年人在线免费观看网站 | 免费看欧美一级片 | 国内少妇毛片视频 | 伊人网在线免费观看 | 精品国产三级a∨在线 | 超碰天天干 | 天堂一区二区三区 | 久久sp | 亚洲视频在线免费播放 | 国产无遮挡免费观看视频网站 | 国产拍拍拍拍拍拍拍拍拍拍拍拍拍 | 秋霞午夜鲁丝一区二区老狼 | 色综合一区二区 | 欧美成人午夜 | 欧美一区视频在线 | 欧美日日操 | 久久性| 高清国产午夜精品久久久久久 | 污污污污污污www网站免费 | 久久久精品动漫 | 五月天视频网 | 久草视频首页 | 中文字幕欧美视频 | 摸丰满大乳奶水www免费 | 在线看日韩 |