<pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

          <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

          <p id="bbfd9"></p>

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

            <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

            <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
            <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>

            Linux下子進程與父進程的關系

            時間:2024-10-10 01:33:15 Linux認證 我要投稿
            • 相關推薦

            Linux下子進程與父進程的關系

              我們知道,Linux下父進程可以使用fork 函數創建子進程,但是當父進程先退出后,子進程會不會也退出呢?到底Linux下父進程和子進程的關系如何呢?下文為大家分享最新代碼如下:

              通過下面這個小實驗,我們能夠很好的看出來:

              復制代碼

              /******** basic.c ********/

              1 #include "basic.h"

              2

              3 pid_t Fork(void)

              4 {

              5 pid_t pid = fork();

              6 if (pid < 0) {

              7 fprintf(stderr, "Fork error: %s\n", strerror(errno));

              8 exit(0);

              9 }

              10

              11 return pid;

              12 }

              復制代碼

              1 ********** basic.h ***********

              2

              3 #ifndef __CSAPP_BASIC_H

              4 #define __CSAPP_BASIC_H

              5

              6 #include

              7 #include

              8 #include

              9 #include

              10 #include

              11 #include

              12 /* function definition concerned with basic.c */

              13 pid_t Fork();

              14

              15 #endif

              復制代碼

              1 ******* fork.c *********

              2

              3 #include "basic.h"

              4

              5 int main()

              6 {

              7 int pid = Fork();

              8 int x = 2;

              9

              10 if (pid == 0) {

              11 printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);

              12 sleep(3);

              13

              14 printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);

              15 exit(0);

              16 }

              17

              18 printf("parent: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), --x);

              19

              20 }

              通過 gcc fork.c basic.c -o fork 編譯即可的 fork 程序。 運行 ./fork

              可以看出父進程首先退出,退出前child的PPID為12256, 退出后子進程的PPID變為了 1.說明父進程退出后的子進程由 init 超級進程1領養。而該進程是不絕不會退出的。

            【Linux下子進程與父進程的關系】相關文章:

            Linux進程關系最新解讀201609-09

            Linux系統守護進程的啟動方法09-11

            關于linux查看進程ps top區別06-11

            多進程OSPF及進程號的意義05-18

            Linux讓進程在后臺可靠運行的幾種方法09-08

            圍棋棋局的進程劃分10-02

            常見系統進程大全07-26

            如何避免出現僵尸進程09-27

            php多進程編程詳解201706-04

            DOS中判斷進程是否存在的方法07-05

                    <pre id="bbfd9"><del id="bbfd9"><dfn id="bbfd9"></dfn></del></pre>

                    <ruby id="bbfd9"></ruby><p id="bbfd9"><mark id="bbfd9"></mark></p>

                    <p id="bbfd9"></p>

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

                      <th id="bbfd9"><form id="bbfd9"><dl id="bbfd9"></dl></form></th>

                      <p id="bbfd9"><cite id="bbfd9"></cite></p><p id="bbfd9"></p>
                      <p id="bbfd9"><cite id="bbfd9"><progress id="bbfd9"></progress></cite></p>
                      飘沙影院