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