zoukankan      html  css  js  c++  java
  • 会话

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

  • 相关阅读:
    CF-478C
    HDU-2074-叠筐
    HDU-2037-今年暑假不AC
    POJ-2785-4 Values whose Sum is 0
    HDU-1160-FatMouse's Speed
    HDU-1297-Children’s Queue
    Redis客户端管理工具的安装及使用
    Redis客户端管理工具,状态监控工具
    memcached可视化客户端工具
    javascript回调函数
  • 原文地址:https://www.cnblogs.com/justart/p/7723114.html
Copyright © 2011-2022 走看看