【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系统编程(二) 一.exec函数族 1.exec函数 二.孤儿进程和僵尸进程 三.wait和waitpid 1.wait函数 2.waitpid函数 一.exec函数族 exec函数使用时, ...
- Linux系统编程(六)守护进程
Linux系统编程(六)守护进程 一.进程组 概念 二.会话 创建会话的条件 守护进程 概念 守护进程模型 创建守护进程 一.进程组 概念 进程组,也称之为作业.代表一个或多个进程的集合.每个进程都属 ...
- Linux系统编程【文件IO、进程、进程间通信、信号、线程、互斥】
linux系统编程 个人通过学习,手打了一份48000字的Linux系统编程的笔记,包含了[文件IO.进程.进程间通信.信号.多线程.互斥]等知识点,并给出了大量的代码案例对每个重要的知识点进行了代码 ...
- 嵌入式Linux系统编程学习之十二守护进程
文章目录 前言 一.守护进程的特性 二.daemon 进程的编程规则 1.创建子进程,父进程退出 2.在子进程中创建新会话 前言 daemon 运行在后台,也称作"后台服务进程" ...
- Linux系统编程--2(环境变量,进程控制)
环境变量 环境变量 是指在操作系统中用来指定操作系统运行环境的一些参数 每个人用电脑的习惯不一样,比如一般把文件放到磁盘,怎么管理文件,用什么编译器,所以,环境变量就是根据每个人使用操作系统的习惯来规 ...
- Linux系统编程----15(线程与进程函数之间的对比,线程属性及其函数,线程属性控制流程,线程使用注意事项,线程库)
对比 进程 线程 fork pthread_create exit (10) pthread_exit (void *) wait (int *) pthread_join (,void **)阻塞 ...
- Linux系统编程:习题,父子进程通过信号通信,实现交替数数
Linux练习题,父子进程通过信号通信,实现交替数数. 习题思路 父子进程交替发信号进行驱动从而实现数数,值得注意的是 不管是父进程或者子进程谁先发送信号 都会面临一个问题,另外一个进程的信号捕捉函数 ...
- linux终端和执行进程的关系,Linux系统编程第04期:打通进程与终端的任督二脉
本课程是<嵌入式工程师自我修养>自学教程六步走中的第3步:Linux系统编程第04期. 进程,是Linux系统中任务调度运行的基本单元:一个程序的运行,都要被操作系统包装成"进程 ...
- Linux系统编程总结
day2 vim的三种工作模式 命令模式 vi hello.c zz 保存退出 2.编辑模式 i a o s (有大写)可以写东西 3.末行模式: 文本和末行模式不能直接切换 要切换回命令模式 再到末 ...
最新文章
- python基本语法语句-Python基本语法,python,基础
- keepalived主要模块
- 读书笔记之Unix命令
- java之七 高级类设计
- Windows与Linux下进程间通信技术比较
- 解决:Command line is too long. In order to reduce its length classpath file can be used.
- LeetCode 135 分发糖果
- matlab 排课代码,matlab遗传算法排课问题,程序一直有错,求解答
- influx没有web_influxdb 安装及简单使用
- 前沿 | IBM语音识别已接近人类水平
- poj 1961 KMP的应用
- CBoard 0.4.2环境搭建
- 【MapGIS必备】常见问题处理(第十四期)
- 原来这就是公文写作领导讲话稿万能模板(1)
- 计算机的进制的转换公式,计算机进制转换公式
- 4、Gantt 任务节点部分
- 「Python|场景案例」如何获取音视频中声音片段的起止时间?
- vue使用报错记录(cli4):[vue/valid-v-for] Custom elements in iteration require ‘v-bind:key‘ direc
- python输出好看的表格
- HBuilder的安装及用法
热门文章
- php的类图怎么生成_PHP设计模式之简单工厂模式
- java filter注入_如何使用Filter过滤请求中的SQL注入攻击
- 华为鸿蒙系统首发设备,华为鸿蒙系统首发设备曝光!不是手机
- C语言学习之1到10的奇数相乘1到10的偶数相乘
- 面试题:如何编写一个杯子测试用例
- noi.ac NOIP2018 全国热身赛 第四场 T1 tree
- MySQL Infobright 数据仓库快速安装笔记[转]
- 前端开发中的一些js小技巧
- oracle数据库元数据SQL查询
- Memetic Algorithm(文化基因算法)