<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>

            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

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看