posts - 134,comments - 22,trackbacks - 0
          Linux內核中的進程組及會話
          將闡述Linux內核中的如下幾個概念
          1) 進程組
          2) 會話
          3) 控制終端
          前面的概念來源于前人,我只是站在前人的肩膀上結合內核中的實現加深概念理解。
          1.概念:
          a)進程組
          Shell 上的一條命令行形成一個進程組
          每個進程屬于一個進程組
          每個進程組有一個領頭進程
          進程組的生命周期到組中最后一個進程終止, 或加入其他進程組為止
          getpgrp: 獲得進程組 id, 即領頭進程的 pid
          setpgid: 加入進程組和建立新的進程組
          前臺進程組和后臺進程組
          ===============================================================================
                 #include
                  int setpgid (pid_t pid, pid_t pgid);
                  pid_t getpgid (pid_t pid);
                  int setpgrp (void);
                  pid_t getpgrp (void);
          -------------------------------------------------------------------------------
              進程只能將自身和其子進程設置為進程組 id.
              某個子進程調用 exec 函數之后, 就不能再將該子進程的 id 作為進程組 id.
          ===============================================================================
          b)會話
          一次登錄形成一個會話
          一個會話可包含多個進程組, 但只能有一個前臺進程組.
          setsid 可建立一個新的會話
          ===============================================================================
                 #include
                 pid_t setsid(void);
          -------------------------------------------------------------------------------
              如果調用進程不是進程組的領頭進程, 該函數才能建立新的會話.
              調用 setsid 之后, 進程成為新會話的領頭進程.
              進程成為新進程組的領頭進程.
              進程失去控制終端
          ===============================================================================
          c)控制終端
          會話的領頭進程打開一個終端之后, 該終端就成為該會話的控制終端 (SVR4/Linux)
          與控制終端建立連接的會話領頭進程稱為控制進程 (session leader)
          一個會話只能有一個控制終端
          產生在控制終端上的輸入和信號將發送給會話的前臺進程組中的所有進程
          終端上的連接斷開時 (比如網絡斷開或 Modem 斷開), 掛起信號將發送到控制進程(session leader)
          posted on 2010-08-06 14:09 何克勤 閱讀(311) 評論(0)  編輯  收藏 所屬分類: GNU Linux/Unix
          主站蜘蛛池模板: 塔河县| 梁山县| 涟源市| 枞阳县| 江阴市| 丰原市| 桂林市| 泊头市| 南乐县| 越西县| 临沧市| 刚察县| 大厂| 桃园市| 沙田区| 宜兰市| 留坝县| 阿拉尔市| 隆子县| 广南县| 临沭县| 宜春市| SHOW| 屯昌县| 宁津县| 紫云| 新化县| 伊金霍洛旗| 宿州市| 武安市| 安岳县| 平定县| 内乡县| 五河县| 沾化县| 天等县| 甘德县| 广宁县| 麻栗坡县| 玉田县| 和静县|