• 会话


    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,让子进程在新的进程组中担任组长进程

  • 相关阅读:
    洛谷 P1068 分数线划定
    LeetCode 7. Reverse Integer
    LeetCode 504. Base 7
    洛谷 P1598 垂直柱状图
    用户场景
    个人博客03
    个人博客02
    个人博客01
    《构建之法》阅读笔记03
    学习进度条(第四周)
  • 原文地址:https://www.cnblogs.com/justart/p/7723114.html
Copyright © 2020-2023  润新知