• 会话


    1、会话

    一个会话可以包含1个或多个进程组,shell管道通常会将几个进程编成一组

    比如:pro1 | proc2 && proc3|proc4|proc5|proc6

    此时形成了两个进程组,p1,p2是一组,p3,p4,p5,p6又是一个进程组

    2、setsid---建立会话

    如果调用此函数的进程不是进程组的组长,则此函数创建一个新会话,如果已经是组长则创建出错。

    如何保证创建会话的进程不是进程组的组长,通过fork创建子进程,然后关闭父进程,由于子进程继承父进程的进程组ID,所以它不是进程组长。

    1)该进程会成为会话首进程,调用setsid的创建会话的进程为首进程,此时它是会话中唯一进程,(也将成为会话的控制进程--自己推断)

    2)该进程会成为新进程组的组长进程,新进程组ID即为该进程ID

    3)该进程没有控制终端关联,即使有也会被切断

    3、getsid(pid)

    获取指定进程的会话id,如果pid不在调用进程所在的会话,将不会返回会话首进程的组ID。

    系统启动后,进入shell后,shell执行程序会在子进程中设置进程组ID--setpgid,让子进程在新的进程组中担任组长进程

  • 相关阅读:
    使用 RestSharp 调用 WebAPI 接口
    Android Studio 下载安装目录
    多线程之await/async
    ScriptX进行Web打印
    Sqlserver 查询最新修改过的表、过程和视图等
    SqlServer中的bit类型
    .Net 6
    PDA 使用总结
    SQL Server 发布订阅 发布类型详解
    Profile对象
  • 原文地址:https://www.cnblogs.com/justart/p/7723114.html
Copyright © 2020-2023  润新知