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: %sn", 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 = %dn", getpid(), getppid(), ++x);
12 sleep(3);
13
14 printf("child: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), ++x);
15 exit(0);
16 }
17
18 printf("parent: pid = %d, ppid = %d, x = %dn", getpid(), getppid(), --x);
19
20 }
通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。 运行 ./fork
可以看出父进程首先退出,退出前child的`PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。
-
2017年红旗linux认证考试试题
Linux承袭的是开放式原始码(OpenSource)的精神,所有LinuxSourceCode(源代码)均可免费取得,这使得它相对其它的操作系统(尤其是昂贵的WindowsNT)而言价格极其便宜。下面是小编整理的关于红旗linux认证考试试题,希望大家认真练习!1、当系统工作负载增加时,cpu的a将占...
-
Linux 服务器集群系统实现方案
一、集群的基本概念有一种常见的方法可以大幅提高服务器的安全性,这就是集群。Cluster集群技术可如下定义:一组相互独立的服务器在网络中表现为单一的系统,并以单一系统的模式加以管理。此单一系统为客户工作站提供高可靠性的服务。大多数模式下,集群中所有的计算...
-
Linux认证基础知识:Linux中正则表达式与文件处理
在学习Linux认证过程中,每个人会遇到每个人不同的问题,或小或大,真心希望同学们能少受些折磨,多得一些成就感与豁然开朗的感觉,这样的学习才能化被动为主动,越学越快乐。一、正则表达式1.简单的说正则表达式就是处理字符串的方法,它是以行为单位来进行字符串的处理行...
-
Linux系统的10个最危险命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。下面跟yjbys一起来看看最新的Linux命令!希望能帮助到大家!(译注:当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩...