<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                進程組,會話和控制終端之間的關系如下 ![進程組,會話和控制終端之間的關系](https://box.kancloud.cn/54a19d9352813ca30eb379c6e87e6cbd_679x518.png) 一個控制終端對應一個會話,會話包括多個進程組,進程組包括前端進程組和后端進程組 ### 進程組 - 由上圖可知,在同個進程組中的各個進程PGID一樣,每個進程組首個進程稱為進程組首進程,首進程的PID(進程ID)會成為PGID(進程組ID); - 前臺進程組才可以從控制終端讀取輸入; - 子進程會繼承父進程的PGID(進程組ID) #### getpgrp獲取進程組ID ```c #include <unistd.h> pid_t getpgrp(void); ``` #### setpgid修改進程組ID ```c // returns 0 on success, or -1 on error #include <unistd.h> int setpgid(pid_t pid, pid_t pgid) ``` ### 會話 - 由上圖可知,同個會話的所有進程的SID(會話ID)一樣;首個創建該會話的進程成為會話首進程,會話首進程的PID會成為SID,如圖bash為會話的首進程 - 子進程會繼承父進程的SID(會話ID) #### getsid獲取會話ID ```c // returns sid on success, or -1 on error #include <unsitd.h> pid_t getsid(pid_t pid) ``` 當pid為0時,獲取的是當前調用進程的會話ID #### setsid設置會話ID ```c // returns sid on success, or -1 on error pid_t setsid(void) ``` - 如果調用進程不是會話首進程,那么會新建一個會話,否則調用會報出EPERM錯誤 - 會話被創建出來是沒有控制終端(需要會話首進程打開一個終端才會建立控制終端),所有之前到控制終端的連接都會被斷開 ### 控制終端 - 會話首進程首次打開一個終端設備時會建立控制終端,當控制終端建立后,會話首進程會成為該終端的控制進程 - 子進程會繼承父進程的控制終端 - 當斷開和終端連接時,內核會向控制進程發送一個SIGHUP信號,這也是判斷一個進程是否為控制進程的方法 ### 參考 - Linux系統編程手冊(下冊)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看