靜網PWA視頻評論

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

2024年01月05日

- txt下載

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領養。而該進程是不絕不會退出的。

收藏

相關推薦

清純唯美圖片大全

字典網 - 試題庫 - 元問答 - 简体 - 頂部

Copyright © cnj8 All Rights Reserved.