<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                守護進程即后臺運行的服務進程,它獨立于控制終端,原因是為了避免被任何終端產生的信息打斷,在執行過程中信息也不會在終端顯示,關于控制終端可以參考其他資料 ### 查看守護進程 ```bash ps axj ``` ### 實現過程 - fork創建子進程,父進程退出 - 子進程繼續調用setsid創建新會話,此時子進程會成為新會話的首進程,并脫離從父進程繼承過來的會話,控制終端 - 再次fork,退出父進程,目的是確保daemon進程不是會話首進程,因為當會話首進程open一個終端設備時會建立控制終端,守護進程不需要控制終端 - unmask(0),確保daemon有足夠創建文件和目錄的權限 - 修改當前工作目錄 - 關閉文件描述符 - 重定向標準輸出,標準輸入,錯誤輸出到/dev/null ### demo ```c int daemon() { pid_t pid; int fd, maxfd; // fork switch(fork()) { case -1: return -1 case 0: break; default: _exit(0); } // setsid, create new session if (setsid() == -1) { return -1; } // fork switch(fork()) { case -1: return -1; case 0: break; default: _exit(0); } // umask umask(0); // chdir chdir("/"); // close all file descriptor maxfd = sysconf(_SC_OPEN_MAX); if (maxfd) { for (int i = 0; i < maxfd; ++i) { close(i); } } // dup to /dev/null fd = open("/dev/null", O_RDWR); if (fd < 0) { return -1; } if (dup2(fd, STDIN_FILENO) < 0 || dup2(fd, STDOUT_FILENO) < 0 || dup2(fd, STDERR_FILENO) < 0) { close(fd); return -1; } close(fd); return 0; } ```
                  <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>

                              哎呀哎呀视频在线观看