热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

unix环境高级编程进程关系

会话:是一个或多个进程组的集合。通常是由shell管道将几个进程编成一组,比如proc1|proc2&进程调用setsid函数建立一个新会话。如果调用此

会话:

是一个或多个进程组的集合。

通常是由shell管道将几个进程编成一组,比如 proc1 | proc2 &

进程调用setsid函数建立一个新会话。如果调用此函数的进程不是一个进程组的组长,此函数创建一个新会话,该进程会变成新会话的的会话首进程(session leader),此时,该进程是新会话中的唯一进程,该进程成为新进程组的组长进程,新进程组ID是该调用进程的进程ID,该进程没有控制终端,如果在调用setsid之前该进程有一个控制终端,这种联系也被切断。

如果该调用进程已经是一个进程组的组长,则此函数返回出错,为了保证不出现这种情况,通常先调用fork,然后使父进程终止,而子进程继续,因此子进程继承了父进程的进程组ID,而其进程ID则是新分配的,两者不可能相等,这就保证了子进程不是一个进程组的组长。


控制终端:

会话和进程组还有一些其他特性:

一个会话可以有一个控制终端(controlling terminal)

建立与控制终端连接的会话首进程被称为控制进程

一个会话的几个进程组可被分成一个前台进程组以及一个或多个后台进程组。

无论何时键入终端的中断键,都会将中断信号发送至前台进程组的所有进程

无论何时键入终端的退出键,都将退出信号发送至前台进程组的所有进程

通常不用担心控制终端,登陆时,将自动建立控制终端。


函数tcgetpgrp、tcsetpgrp和tcgetsid

需要有一种方法来通知内核哪一个进程组是前台进程组,这样终端设备驱动程序就知道将终端输入和终端产生的信号发送到何处。


作业控制:

它允许在一个终端上启动多个作业(进程组),它控制哪个作业可以访问该终端以及哪些作业在后台运行,作业控制要求以下三种形式的支持。

1.支持作业控制的shell

2.内核中的终端驱动程序必须支持作业控制

3.内核必须提供对某些作业控制信号的支持


孤儿进程组:

如果一个进程,fork了一个子进程然后终止,如果子进程也停止,将如何?子进程如何继续,以及子进程是否知道自己是孤儿进程。

在fork之后,父进程沉睡5s,这是一种让子进程在父进程终止之前运行的一种权宜之计,当父进程终止后,子进程成为孤儿进程,所以父进程ID成为1,也就是init进程。那么子进程成为一个孤儿进程组的成员

孤儿进程组:该组的每个成员的父进程要么是该组的一个成员,要么不是该组所属会话的成员。

转:https://www.cnblogs.com/sichenzhao/p/9320364.html



推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • 解决Jenkins编译过程中ERROR: Failed to Parse POMs的问题
    在使用Jenkins进行自动化构建时,有时会遇到“ERROR: Failed to parse POMs”的错误。本文将详细分析该问题的原因,并提供有效的解决方案。 ... [详细]
  • centos 7.0 lnmp成功安装过程(很乱)
    下载nginx[rootlocalhostsrc]#wgethttp:nginx.orgdownloadnginx-1.7.9.tar.gz--2015-01-2412:55:2 ... [详细]
  • HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送www方式的数据。HTTP协议采用了请求响应模型。客服端向服务器发送一 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 解决针织难题:R语言编程技巧与常见错误分析 ... [详细]
  • 在探讨Hibernate框架的高级特性时,缓存机制和懒加载策略是提升数据操作效率的关键要素。缓存策略能够显著减少数据库访问次数,从而提高应用性能,特别是在处理频繁访问的数据时。Hibernate提供了多层次的缓存支持,包括一级缓存和二级缓存,以满足不同场景下的需求。懒加载策略则通过按需加载关联对象,进一步优化了资源利用和响应时间。本文将深入分析这些机制的实现原理及其最佳实践。 ... [详细]
  • 深入理解Java多线程与并发机制
    本文探讨了Java多线程和并发机制的核心概念,包括多线程类的分类、执行器框架、并发容器及控制工具。通过详细解析这些组件,帮助开发者更好地理解和应用多线程技术。 ... [详细]
  • 本文为初学者提供了一条清晰的学习路线,帮助他们逐步成长为优秀的Web开发人员。通过十个关键步骤,涵盖从基础到高级的各个方面,确保每位学习者都能找到适合自己的学习方向。 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 使用Tkinter构建51Ape无损音乐爬虫UI
    本文介绍了如何使用Python的内置模块Tkinter来构建一个简单的用户界面,用于爬取51Ape网站上的无损音乐百度云链接。虽然Tkinter入门相对简单,但在实际开发过程中由于文档不足可能会带来一些不便。 ... [详细]
  • 在Kohana 3框架中,实现最优的即时消息显示方法是许多开发者关注的问题。本文将探讨如何高效、优雅地展示flash消息,包括最佳实践和技术细节,以提升用户体验和代码可维护性。 ... [详细]
  • 2012年9月12日优酷土豆校园招聘笔试题目解析与备考指南
    2012年9月12日,优酷土豆校园招聘笔试题目解析与备考指南。在选择题部分,有一道题目涉及中国人的血型分布情况,具体为A型30%、B型20%、O型40%、AB型10%。若需确保在随机选取的样本中,至少有一人为B型血的概率不低于90%,则需要选取的最少人数是多少?该问题不仅考察了概率统计的基本知识,还要求考生具备一定的逻辑推理能力。 ... [详细]
author-avatar
超级神棍小虾米
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有