Linux下子进程与父进程的关系

时间:2020-08-12 17:55:22 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进程关系最新解读201605-25

Linux系统守护进程的启动方法05-17

关于linux查看进程ps top区别09-30

多进程OSPF及进程号的意义11-12

Linux让进程在后台可靠运行的几种方法08-27

常见系统进程大全10-11

围棋棋局的进程划分10-08

如何避免出现僵尸进程10-05

php多进程编程详解201711-12