【Linux系统编程】特殊进程之孤儿进程
生活随笔
收集整理的這篇文章主要介紹了
【Linux系统编程】特殊进程之孤儿进程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. 孤兒進程概述
- 02. 孤兒進程代碼
- 03. 附錄
01. 孤兒進程概述
父進程運行結束,但子進程還在運行的子進程就稱為孤兒進程(Orphan Process)。孤兒進程最終會被 init 進程(進程號為 1 )所收養,并由 init 進程對它們完成狀態收集工作。
孤兒進程是沒有父進程的進程,為避免孤兒進程退出時無法釋放所占用的資源而變為僵尸進程,進程號為 1 的 init 進程將會接受這些孤兒進程,這一過程也被稱為“收養”。init 進程就好像是一個孤兒院,專門負責處理孤兒進程的善后工作。每當出現一個孤兒進程的時候,內核就把孤兒進程的父進程設置為 init ,而 init 進程會循環地 wait() 它的已經退出的子進程。這樣,當一個孤兒進程凄涼地結束了其生命周期的時候,init 進程就會代表黨和政府出面處理它的一切善后工作。因此孤兒進程并不會有什么危害。
注意:
在有些啟動圖形界面的系統中,有些收養孤兒進程的并不一定是1號進程。
02. 孤兒進程代碼
孤兒進程代碼
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h>int main(void) {int i = 0;pid_t pid = -1;//孤兒進程pid = fork();if (-1 == pid){perror("fork"); goto err0;}else if (0 == pid){while(i < 10){printf("I am child process %d --> %d\n", getpid(), i++);sleep(2);}exit(0);}return 0; err0:return 1; }測試結果:
03. 附錄
3.1 參考博客:【Linux系統編程】特殊進程之孤兒進程
總結
以上是生活随笔為你收集整理的【Linux系统编程】特殊进程之孤儿进程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Linux系统编程】特殊进程之僵尸进程
- 下一篇: 【Linux系统编程】特殊进程之守护进程