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系统编程】特殊进程之孤儿进程相关推荐

  1. Linux系统编程(二)孤儿进程和僵尸进程

    Linux系统编程(二) 一.exec函数族 1.exec函数 二.孤儿进程和僵尸进程 三.wait和waitpid 1.wait函数 2.waitpid函数 一.exec函数族 exec函数使用时, ...

  2. Linux系统编程(六)守护进程

    Linux系统编程(六)守护进程 一.进程组 概念 二.会话 创建会话的条件 守护进程 概念 守护进程模型 创建守护进程 一.进程组 概念 进程组,也称之为作业.代表一个或多个进程的集合.每个进程都属 ...

  3. Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】

    linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...

  4. 嵌入式Linux系统编程学习之十二守护进程

    文章目录 前言 一.守护进程的特性 二.daemon 进程的编程规则 1.创建子进程,父进程退出 2.在子进程中创建新会话 前言   daemon 运行在后台,也称作"后台服务进程" ...

  5. Linux系统编程--2(环境变量,进程控制)

    环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...

  6. Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)

    对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...

  7. Linux系统编程:习题,父子进程通过信号通信,实现交替数数

    Linux练习题,父子进程通过信号通信,实现交替数数. 习题思路 父子进程交替发信号进行驱动从而实现数数,值得注意的是 不管是父进程或者子进程谁先发送信号 都会面临一个问题,另外一个进程的信号捕捉函数 ...

  8. linux终端和执行进程的关系,Linux系统编程第04期:打通进程与终端的任督二脉

    本课程是<嵌入式工程师自我修养>自学教程六步走中的第3步:Linux系统编程第04期. 进程,是Linux系统中任务调度运行的基本单元:一个程序的运行,都要被操作系统包装成"进程 ...

  9. Linux系统编程总结

    day2 vim的三种工作模式 命令模式 vi hello.c zz 保存退出 2.编辑模式 i a o s (有大写)可以写东西 3.末行模式: 文本和末行模式不能直接切换 要切换回命令模式 再到末 ...

最新文章

  1. python基本语法语句-Python基本语法,python,基础
  2. keepalived主要模块
  3. 读书笔记之Unix命令
  4. java之七 高级类设计
  5. Windows与Linux下进程间通信技术比较
  6. 解决:Command line is too long. In order to reduce its length classpath file can be used.
  7. LeetCode 135 分发糖果
  8. matlab 排课代码,matlab遗传算法排课问题,程序一直有错,求解答
  9. influx没有web_influxdb 安装及简单使用
  10. 前沿 | IBM语音识别已接近人类水平
  11. poj 1961 KMP的应用
  12. CBoard 0.4.2环境搭建
  13. 【MapGIS必备】常见问题处理(第十四期)
  14. 原来这就是公文写作领导讲话稿万能模板(1)
  15. 计算机的进制的转换公式,计算机进制转换公式
  16. 4、Gantt 任务节点部分
  17. 「Python|场景案例」如何获取音视频中声音片段的起止时间?
  18. vue使用报错记录(cli4):[vue/valid-v-for] Custom elements in iteration require ‘v-bind:key‘ direc
  19. python输出好看的表格
  20. HBuilder的安装及用法

热门文章

  1. php的类图怎么生成_PHP设计模式之简单工厂模式
  2. java filter注入_如何使用Filter过滤请求中的SQL注入攻击
  3. 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备曝光!不是手机
  4. C语言学习之1到10的奇数相乘1到10的偶数相乘
  5. 面试题:如何编写一个杯子测试用例
  6. noi.ac NOIP2018 全国热身赛 第四场 T1 tree
  7. MySQL Infobright 数据仓库快速安装笔记[转]
  8. 前端开发中的一些js小技巧
  9. oracle数据库元数据SQL查询
  10. Memetic Algorithm(文化基因算法)