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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux学习之系统编程篇:孤儿进程和僵尸进程(描述对象都是子进程)

發布時間:2024/9/30 linux 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux学习之系统编程篇:孤儿进程和僵尸进程(描述对象都是子进程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、孤兒進程

孤兒進程:不是沒有爹!會被領養。
過程:爹先死,孩子還活著,孩子稱為孤兒進程。
注意:孤兒會被 init 進程領養(init 進程是所有孤兒進程的父進程)。
設計領養目的:為了子進程結束后,可以回收子進程占有的系統資源,因為進程結束后,子進程自己能夠釋放用戶區空間,但無法釋放 PCB,只能由父親釋放。

二、僵尸進程

僵尸進程:是一個死的進程。
過程:孩子死了,爹不回收孩子的 PCB,此時,孩子稱為僵尸進程。

三、設計孤兒進程

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() {pid_t pid = fork();if(pid == 0) {sleep(1); // 子進程睡一秒,使父進程先執行return死掉printf("%d\n",getppid()); // 結果:子進程的ppid = 1 // 意味著被init進程領養}if(pid > 0){printf("%d\n",getpid()); // 結果:父進程的pid =3458}return 0;

四、設計僵尸進程

#include <stdio.h> #include <stdlib.h> #include <unistd.h> int main() {pid_t pid = fork();if(pid == 0) {printf("I am child"); // 先執行return死掉}if(pid > 0){ while (1) { sleep(1) // 父親一直sleep,因此沒有回收子進程,使子進程成為僵尸進程 }}return 0; }

那么如何殺死僵尸進程呢?
注意: 不能用 kill -9 pid,因為這個命令是殺死活的進程,
我們用殺死父進程,使僵尸進程被領養,自動釋放。

總結

以上是生活随笔為你收集整理的Linux学习之系统编程篇:孤儿进程和僵尸进程(描述对象都是子进程)的全部內容,希望文章能夠幫你解決所遇到的問題。

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