zoukankan      html  css  js  c++  java
  • 进程组&Session

    [进程组]

     1. getpgrp(), getpgid(0) 可获取进程组id, 进程组长的pid等于pgid. 如果进程组长exit, 则进程组依旧存在, 组内其它进程的组ID仍然是之前的ID, 即不存在进程组长了.

     2. fork()一个子进程后,子进程的组ID为父进程的组ID. 可以通过setpgid()来更改.

     3. shell 中执行一个后台命令, 则会创建一个进程&进程组

     4. shell 中执行一个前台命令, 则会创建一个进程&进程组, 如果有管道, 则所有的管道命令在同一个进程组

        5. 一个终端所有的前后台进程组的进程都有一个session中, 拥有相同的session id. 通过setsid()可以创建一个无终端的新会话.

      6. 从下图可以看到, bash的pid=pgid=sid, 显然bash就是一个session的头, 是bash提供了一个交互式的环境. 意即"终端退出" = "Session退出" 

      

     7. jobs不是一个可执行文件, 应该是bash内置的一个命令, bash在执行一个后台命令时,如&, 内部就会记录一个job. 所以jobs是bash的内部命令

      whereis find, 输出如下:

      

      whereis jobs, 输出如下:

      

      可见jobs并不是一个bin,而是bash的内置变量. 它并不根据PGID来统计,而是根据提交给bash的后台命令.

      

  • 相关阅读:
    Python中的类(上)
    Django REST Framework API Guide 07
    Django REST Framework API Guide 06
    Django REST Framework API Guide 05
    Django REST Framework API Guide 04
    Django REST Framework API Guide 03
    Django REST Framework API Guide 02
    Django REST Framework API Guide 01
    Django 详解 信号Signal
    Django 详解 中间件Middleware
  • 原文地址:https://www.cnblogs.com/tekkaman/p/3340479.html
Copyright © 2011-2022 走看看