Linux 下子进程与父进程的关系
我们知道,Linux下父进程可以使用fork 函数创建子进程,但是当父进程先退出后,子进程会不会也退出呢?
通过下面这个小实验,我们能够很好的看出来:
/******** basic.c ********/
1 #include "basic.h" pid_t Fork(void)
{
pid_t pid = fork();
if (pid < ) {
fprintf(stderr, "Fork error: %s\n", strerror(errno));
exit();
} return pid;
}
********** basic.h *********** #ifndef __CSAPP_BASIC_H
#define __CSAPP_BASIC_H #include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
/* function definition concerned with basic.c */
pid_t Fork(); #endif
******* fork.c ********* #include "basic.h" int main()
{
int pid = Fork();
int x = ; if (pid == ) {
printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);
sleep(); printf("child: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), ++x);
exit();
} printf("parent: pid = %d, ppid = %d, x = %d\n", getpid(), getppid(), --x); } 通过 gcc fork.c basic.c -o fork 编译即可的 fork 程序。 运行 ./fork

可以看出父进程首先退出,退出前child的PPID为12256, 退出后子进程的PPID变为了 1.说明父进程退出后的子进程由 init 超级进程1领养。而该进程是不绝不会退出的。
Linux 下子进程与父进程的关系的更多相关文章
- Linux编程 6 (查看进程 ps 及输出风格)
一.查看进程命令ps 1.1 默认ps 命令 在默认情况下,ps命令只会显示运行在当前控制台下,属于当前用户的进程,在上图中,我们只运行了bash shell以及ps命令本身. 上图中显示了程序的进程 ...
- Linux学习-什么是进程 (process)
触发 任何一个事件时,系统都会将他定义成为一个进程,并且给予这个进程一个 ID ,称为 PID,同时依据启发这个进程的用户与相关属性关系,给予这个 PID 一组有效的权限设定.从此以后,这 个 PID ...
- Linux进程-进程的创建
今天学习了Linux的进程创建的基本原理,是基于0.11版本核心的.下面对其作一下简单的总结. 一.Linux进程在内存中的相关资源 很容易理解,Linux进程的创建过程就是内存中进程相关资源产生 ...
- linux内核之进程的基本概念(进程,进程组,会话关系)
进程是操作系统的一个核心概念.每个进程都有自己唯一的标识:进程ID,也有自己的生命周期.一个典型的进程的生命周期如图4-1所示. 进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家 ...
- linux c编程:进程控制(四)进程关系
每一个进程除了有一个进程ID外,还属于一个进程组. 进程组是一个或多个进程的集合,通常情况下,他们是在同一作业中结合起来的,同一进程组的个进程接受来自同一终端的各种信号. 每一个进程组有一个唯一的进 ...
- Linux内核剖析 之 进程简单介绍
1.概念 1.1 什么是进程? 进程是程序运行的一个实例.能够看作充分描写叙述程序已经运行到何种程度的数据结构的汇集. 从内核观点看.进程的目的就是担当分配系统资源(CPU时间,内存 ...
- Linux零起点之进程管理----c语言编程
进程 (Process)是指操作系统中被加载到内存中的.正在运行的应用程序实例.进程是系统资源分配的基本单元,在其生命周期内会使用系统中的各种资源.进程主要由程序.数据以及进程控制快(PCB)3个部分 ...
- linux系统编程之进程(八):守护进程详解及创建,daemon()使用
一,守护进程概述 Linux Daemon(守护进程)是运行在后台的一种特殊进程.它独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件.它不需要用户输入就能运行而且提供某种服务,不是对整个 ...
- linux下的daemon进程
转自:http://www.cnblogs.com/xuxm2007/archive/2011/07/29/2121280.html #include <unistd.h> int d ...
随机推荐
- 通过loadrunner将http返回response写入文本txt中
脚本如下 Action() { int myFile;//lr不支持FILE类型,所以定义一个int类型的file web_reg_save_param("goods_price" ...
- 解决将easyui里的combobox里的输入框下拉列表变为空值
jQuery easyui官网上有一个方法是 :clear方法,这个方法说是能清除数据,但我测试了,结果它确实清楚了(但他清除的只是输入框显示的数据,没有清除所有的数据),在这里巧妙的用 它加载数据的 ...
- MySQL数据库中varchar与char类型的区别
在数据库中建表时,需要给数据定义一个数据库中的数据库类型,当需要给String类型定义一个数据库中的类型时,可以看见有两个选择,一个是varchar,另一个是char,有很多人不清楚两者的区别,包括自 ...
- docker weave安装
1.升级内核到3.10.0以上,安装iproute22.安装 0.80版本:#wget -O /usr/local/bin/weave https://raw.githubusercontent.co ...
- springMVC 访问静态资源
问题描述 使用SpringMVC时遇到静态资源无法加载的问题,报404 问题原因 如果SpringMVC的映射模式采用的是后缀名匹配,如[*.do]或者[*.action]则不会出现该问题,因为静态资 ...
- c++11 类默认函数的控制:"=default" 和 "=delete"函数
c++11 类默认函数的控制:"=default" 和 "=delete"函数 #define _CRT_SECURE_NO_WARNINGS #include ...
- linux 实践到的命令 collection
查看文件夹/文件 大小:du :(disk usage) 要通过 1024 字节块概述一个目录树及其每个子树的磁盘使用情况,请输入: du -k /home/fran/filename 这在/ho ...
- MT【133】磨刀不误砍柴工
(2018,4月学考数学填空最后一题) \(f(x)=2x^2-(x-a)|x-a|-2 \ge 0\)对任意\(x\in R\)恒成立,求\(a\)的范围______ 提示:\(f(0)=a|a|- ...
- 搜索引擎(Solr-索引详解)
时间字段类型特别说明 Solr中提供的时间字段类型( DatePointField, DateRangeField,废除的TrieDateField )是以时间毫秒数来存储时间的. 要求字段值以ISO ...
- 【codeforces 235E】 Number Challenge
http://codeforces.com/problemset/problem/235/E (题目链接) 题意 给出${a,b,c}$,求${\sum_{i=1}^a\sum_{j=1}^b\sum ...