一、孤儿进程组

1. 孤儿进程的定义:

定义1:该进程组的每个成员的父进程要么是该组的成员,要么在其它会话中。

定义2:一个进程不是孤儿进程组的条件是——该组有一个进程,其父进程在属于同一会话的另一个组中。

只要能够满足上面其中的任一个定义,则此进程组就是孤儿进程组。可能读起来比较拗口,看图 1 中的例子可能会清楚点。

图 1 中,按照孤儿进程组的定义:

  • 进程组 1 不是孤儿进程组,因为进程组 1 中有一个进程的父进程不属于进程组 1,也不在另一个会话中。
  • 进程组 2 是孤儿进程组,因为该组中的每个成员满足定义:每个成员的父进程要么在本组中,要么在其它会话中。

2.  孤儿进程组的特性:

如果进程组存在停止状态的进程,当该进程组变成孤儿进程组时,POSIIX.1要求向新孤儿进程组中的每一个进程发送挂断(SIGHUP),接着又向其发送继续信号(SIGCONT)。

3. 测试代码:

#include <unistd.h>
#include <stdio.h>
#include <signal.h>
#include <stdlib.h>
#include <errno.h>void handler(int signo)
{printf("SIGHUP receive, pid = %d\n", getpid());
}void pr_ids(char* name)
{printf("%s: pid = %d, ppid = %d, pgrp = %d, tpgrp = %d\n", name,getpid(), getppid(), getpgid(getpid()), tcgetpgrp(0));fflush(stdout);
}int main()
{char c;pid_t pid;pr_ids("parent");pid = fork();if (pid < 0){perror("fork");}else if (pid > 0){sleep(5);}else{pr_ids("child");signal(SIGHUP, handler);kill(getpid(), SIGTSTP); // 让子进程暂停pr_ids("child"); // 如果执行了此行,说明已经收到了 SIGHUP 信号if (read(STDIN_FILENO, &c, 1) != 1)printf("read error, error number: %d\n", errno);}exit(0);
}

输出结果:

参考资料

1. 孤儿进程与孤儿进程组

【孤儿进程】孤儿进程组、守护进程相关推荐

  1. 小何讲进程: 编写Linux守护进程方法详解

    守护进程概述 守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程. 它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些事件的发生. 守护进程常常在 ...

  2. linux守护进程以及如何编写守护进程程序

    守护进程 理论 「守护进程」是 Linux 的一种长期运行的后台服务进程,也有人称它为「精灵进程」.我们常见的 httpd.named.sshd 等服务都是以守护进程 Daemon 方式运行的,通常服 ...

  3. Linux进程间关系之守护进程

    概念 守护进程也称精灵进程,是运行在后台的一种特殊进程.守护进程独立于控制终端并且周期性的执行某种任务或者等待处理某些打算的事件.可认为守护进程目的就是防止终端产生的一些信号让进程退出 特点 所有的守 ...

  4. Python 多进程笔记 — 启动进程的方式、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型

    1 面向过程启动多进程 Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另 ...

  5. Linux C/C++编程之(十九)进程组守护进程

    文章目录 一.概述 二.进程组与守护进程 1. 进程组 2. 进程组操作函数 3. 会话 4. 守护进程 一.概述 二.进程组与守护进程 1. 进程组 进程组,也称之为作业.BSD于1980年前后向U ...

  6. python实现守护进程_Python如何实现守护进程的方法示例

    Python如何实现守护进程的方法示例 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  Python如何实现守护进程的方法示例.txt ] (友情提示:右键点上行t ...

  7. 进程间关系和守护进程

    一. 进程组/作业/会话 1.进程组     每一个进程除了有一个进程ID之外, 还属于一个进程组. 进程是一个或多个进程的集合. 通常, 它们与同一个作业向关联, 可以接收来自同一个终端下的各种命令 ...

  8. php 如何守护进程_PHP 如何实现守护进程

    PHP 如何实现守护进程 发布时间:2020-07-11 15:29:31 来源:亿速云 阅读:58 作者:Leah PHP 如何实现守护进程?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望 ...

  9. Linux守护进程编程编写,linux守护进程编程实例

    /* *功能:创建一个守护进程,监视系统所有运行的进程 *时间:2013.4.14 */ #include #include #include #include #include #include # ...

  10. linux怎么监控守护进程,linux shell脚本守护进程监控svn服务

    最近搭建的svn服务不知道什么原因服务总是被关闭(如果你不知道怎么搭建svn可以参考linux下搭建svn版本控制软件),因此用shell脚本实现一个守护进程.用于监控svn服务是否启动,如果服务不在 ...

最新文章

  1. svn的代码提交到git服务器_svn服务器代码仓库,数据迁移到git仓库
  2. php删除指定图片吗,PHP 去除图片指定颜色
  3. Light OJ 1007
  4. # 20155224 第十一周 课堂练习《计算后缀表达式的值》
  5. ocp最新题库之052新题带答案整理-36题
  6. HackerOne年度报告:安全众测推出四年,成果几何?
  7. mysql varbinary blob_MySQL BIT、BINARY、VARBINARY、BLOB(二进制类型)
  8. 缠中说禅电子书_缠中说禅108课PDF电子书
  9. python 取名字_个人儿子叫派森,用python程序化取名字,他管这叫爹?
  10. mysql之mysql.sock文件
  11. 已知两数的最大公因数和最小公倍数
  12. 第二十章 幻读是什么,幻读有什么问题?
  13. 80老翁谈人生(284):沃森参与打击网络犯罪
  14. 一次zookeeper启动失败的解决过程
  15. dotnet OpenXML 文本 Kerning 字间距的作用
  16. Linux 显示文件内行号显示
  17. [易飞]信息传递-多表(含外表)关联取值
  18. C++-FFmpeg-(5)-2-h264-概念与名词:宏块-I-P-B帧;参数设置:ABR、CQP、CBR、CRF;码流:SPS-PPS
  19. js 金额千分位转换
  20. Android 接入穿山甲SDK之信息流广告

热门文章

  1. java学习_File属性处理
  2. 从控件开发的角度看几个editor控件,Freetextbox,radtoolbar,abouteditor,cuteeditor
  3. 世界 Web 2.0 网站评奖揭晓
  4. mysql数据库访问问题吗_#MySQL数据库无法远程访问的问题
  5. python代码模板_python 代码模板
  6. PE 头文件 IMAGE_NT_HEADER
  7. python数据库连接池使用
  8. kotlin 查找id_Kotlin程序查找矩阵的转置
  9. Java Double类parseDouble()方法的示例
  10. c/c++ 编程试题