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
          主站蜘蛛池模板: 瑞昌市| 郴州市| 阳春市| 台南县| 勃利县| 称多县| 南澳县| 澄江县| 肥城市| 长寿区| 宜州市| 云南省| 邵阳县| 塔城市| 射洪县| 隆子县| 砚山县| 卓尼县| 台江县| 东平县| 车致| 旬邑县| 铁岭县| 崇文区| 绩溪县| 沧源| 闽清县| 富平县| 龙泉市| 兴海县| 榆社县| 新乡县| 阿合奇县| 淳安县| 荆门市| 西和县| 日土县| 库尔勒市| 连山| 岚皋县| 平塘县|