`
ihyperwin
  • 浏览: 425394 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

linux 进程组 会话 控制终端

 
阅读更多
一个进程可以通过fork()调用创建子进程,这些进程就可以构成一个进程组。

进程组
---------------------------------------------
    进程组是一个或多个进程的集合。每个进程组有一个称为组长的进程,组长进程就是其进程号(pid)等于进程组号(gid)的进程(即进程组号等于组长的进程号)。进程组的概念有很多用途,最常见的是我们在终端上向前台执行程序发出终止信号(Ctrl-C),同时终止整个进程组的所有进程。
    (1). Shell上的一条命令行形成一个进程组
    (2). 每个进程属于一个进程组
    (3). 每个进程组有一个领头进程(组长)
    (4). 进程组的生命周期到组中最后一个进程终止, 或加入其他进程组为止
    (5). getpgrp: 获得进程组id, 即领头进程的pid
    (6). 前台进程组和后台进程组
    (7). 进程A(假设该进程为组长)和其子进程B属于同一进程组,它们的进程组号(task_struct.gid)都为进程A的进程号(A.pid)



会话
---------------------------------------------
    会话期(Session,或者称为会话)则是一个或多个进程组的集合。通常情况下,用户登录后所执行的所有程序都属于一个会话期,而其登录shell则是会话期首进程(Session leader),并且它所使用的中断就是会话期的控制终端(Controlling Terminal),因此会话期的首进程通常也被称为控制进程(Controlling process)。当我们退出登录(logout)时,所有属于这个会话期的进程都将被终止。
    (1). 一次登录形成一个会话
    (2). 一个会话可包含多个进程组, 但只能有一个前台进程组.
    (3). setsid()可建立一个新的会话;如果调用该函数的进程不是进程组的领头进程, 该函数才能建立新的会话.
调用setsid()之后, 调用进程将成为新会话的领头进程.



控制终端
---------------------------------------------
    (1) 会话的领头进程打开一个终端之后, 该终端就成为该会话的控制终端 (SVR4/Linux)
    (2) 与控制终端建立连接的会话领头进程称为控制进程 (session leader)
    (3) 一个会话只能有一个控制终端
    (4) 产生在控制终端上的输入和信号将发送给会话的前台进程组中的所有进程
    (5) 终端上的连接断开时(比如网络断开或Modem断开), 挂起信号将发送到控制进程(session leader)
分享到:
评论

相关推荐

    kingking888#web.d#Linux下守护进程的创建及原理1

    进程、进程组、会话、控制终端之间的关系进程组:由一个或者多个进程组成,进程组号(GID),就是这些进程中的进程组长的 PID会话:又叫会话期,它包括了期间所有的

    linux 创建守护进程的相关知识

    在Linux中父进程先于子进程退出会造成子进程成为孤儿进程,而每当系统发现一个孤儿进程是,就会自动由1号进程(init)收养它,这样,原先的子进程就会变成init进程的子进程。 在子进程中创建新会话 这个步骤是创建...

    实验六 进程管理.docx

    通过实验熟悉Linux操作系统环境,掌握与进程相关命令的使用方法。 实验要求 1. 掌握Linux系统中进程的组织结构 2. 掌握会话、进程、进程组和作业的关系 3. 理解前后台进程与控制终端的关系

    Linux-UNIX系统编程手册(下册)1

    第 34 章 进程组、会话和作业控制 57334.1 概述 57334.2 进程组 57534.3 会话 57734.4 控制终端和控制进程57834.5 前台

    linux screen 说明文档(英文版)

    简单来说,Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口...

    Python如何实现守护进程的方法示例

    你编写了一个python服务程序,并且在命令行下启动,而你的命令行会话又被终端所控制,python服务成了终端程序的一个子进程。因此如果你关闭了终端,这个命令行程序也会随之关闭。 要使你的python服务不受终端影响而...

    在后台运行Linux命令的方法

    通常情况下,当你在终端运行一个命令,在你开始输入另外一个命令之前,你必须等待当前命令运行结束。这被称为在前台运行命令,...在这篇文章中,我们将会讨论在 Linux 中的后台进程。我们将会为你演示如何在后台启动

    UNIX环境高级编程_第二版中文

    19.3.3 基于Linux的伪终端  19.4 pty_fork函数  19.5 pty程序  19.6 使用pty程序  19.7 高级特性  19.8 小结  习题  第20章 数据库函数库  20.1 引言  20.2 历史  20.3 函数库  20.4 实现...

    守护进程1

    在子进程中创建新的会话(脱离控制终端):这步是创建守护进程中最重要的一步,虽然实现起来很简单,但是它的意义非常重要,在这里使用的是系统函数setsid()来创建

    python daemon守护进程实现

    假如写一段服务端程序,如果ctrl+c退出或者关闭终端,那么服务端程序就会退出,于是就想着让这个程序成为守护进程,像httpd一样,一直在后端运行,不会受终端影响。 守护进程英文为daemon,像httpd,mysqld,最后一...

    Python守护进程和脚本单例运行详解

    它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动时从启动脚本/etc/rc.d中启动,可以由inetd守护进程启动,也可以有作业...

    linux内核 0.11版本源码 带中文注释

    * 我们需要下面这些内嵌语句 - 从内核空间创建进程(forking)将导致没有写时复制(COPY ON WRITE)!!! * 直到一个执行execve 调用。这对堆栈可能带来问题。处理的方法是在fork()调用之后不让main()使用 * 任何堆栈...

    高级UNIX编程 pdf 电子书

    4.6 其他终端控制系统调用 4.7 终端识别系统调用 4.8 全屏应用程序 4.9 流I/O 4.10 伪终端 练习 第5章 进程和线程 5.1 概述 5.2 环境 5.3 exeo系统调用 5.4 实现shell(版本1) 5.5 fork系统调用 5.6 实现shell(版本2...

    UNIX环境高级编程_第2版.part1

     关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在  此基础上介绍了多个应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附  录中给...

    UNIX环境高级编程_第2版.part2

     关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在  此基础上介绍了多个应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附  录中给...

    UNIX环境高级编程

    关系、信号、线程、线程控制、守护进程、各种I/O、进程间通信、网络IPC、伪终端等方面的内容,还在 此基础上介绍了多个应用实例,包括如何创建数据库函数库以及如何与网络打印机通信等。此外,还在附 录中给出了函数...

    ARM_Linux启动分析.pdf

    在arch/alpha/vmlinux.lds 的链接脚本控制下,链接程序将vmlinux的入口置于 "arch/alpha/kernel/head.S"中的__start上,因此当Bootloader跳转到0x100000时, __start处的代码开始执行。__start的代码很简单,只需要...

    UNIX环境高级编程(第二版中文)

    19.3.3 基于Linux的伪终端 551 19.4 pty_fork函数 553 19.5 pty程序 555 19.6 使用pty程序 559 19.7 高级特性 564 19.8 小结 565 习题 565 第20章 数据库函数库 567 20.1 引言 567 20.2 历史 567...

    unix环境编程电子书

    进程关系 213 9.1 引言 213 9.2 终端登录 213 9.3 网络登录 216 9.4 进程组 218 9.5 会话 219 9.6 控制终端 220 9.7 tcgetpgrp、tcsetpgrp和tcgetsid函数 221 9.8 作业控制 222 9.9 shell执行程序...

Global site tag (gtag.js) - Google Analytics