【原文地址】http://blog.163.com/dengjingniurou@126/blog/static/53989196200962924412524/

fork出的子进程和父进程的继承关系

2009-07-29 14:44:12|  分类: 默认分类|举报|字号 订阅

 
 

fork出来的子进程,基本上除了进程号之外父进程的所有东西都有一份拷贝,基本就意味着不是全部,下面我们要说的是子进程从父进程那里继承了什么东西,什么东西没有继承。还有一点需要注意,子进程得到的只是父进程的拷贝,而不是父进程资源的本身。

由子进程自父进程继承到:

进程的资格(真实(real)/有效(effective)/已保存(saved)
          用户号(UIDs)和组号(GIDs))

环境(environment)

堆栈

内存

打开文件的描述符(注意对应的文件的位置由父子进程共享,
          这会引起含糊情况)

执行时关闭(close-on-exec) 标志 (译者注:close-on-exec标志可通过fnctl()对文件描
     述符设置,POSIX.1要求所有目录流都必须在exec函数调用时关闭。更详细说明,
     参见《UNIX环境高级编程》 W. R. Stevens, 1993, 
     尤晋元等译(以下简称《高级编程》), 3.13节和8.9节)

信号(signal)控制设定

nice值
          (译者注:nice值由nice函数设定,该值表示进程的优先级,
          数值越小,优先级越高)

进程调度类别(scheduler class)
          (译者注:进程调度类别指进程在系统中被调度时所属的类别,不同类别有不同优先级,根据进程调度类别和nice值,进程调度程序可计算出每个进程的全局优先级(Global process prority),优先级高的进程优先执行)

进程组号

对话期ID(Session ID) (译者注:译文取自《高级编程》,指:进程所属的对话期
     (session)ID, 一个对话期包括一个或多个进程组, 更详细说明参见《高级编程》
     9.5节)

当前工作目录

根目录
          (译者注:根目录不一定是“/”,它可由chroot函数改变)

文件方式创建屏蔽字(file mode creation mask (umask))
          (译者注:译文取自《高级编程》,指:创建新文件的缺省屏蔽字)

资源限制

控制终端

子进程所独有:

进程号

不同的父进程号(译者注:
          即子进程的父进程号与父进程的父进程号不同,
          父进程号可由getppid函数得到)

自己的文件描述符和目录流的拷贝(译者注:
          目录流由opendir函数创建,因其为顺序读取,顾称“目录流”)

子进程不继承父进程的进程,正文(text),
          数据和其它锁定内存(memory locks)
     (译者注:锁定内存指被锁定的虚拟内存页,锁定后,
     不允许内核将其在必要时换出(page out),
     详细说明参见《The GNU C Library Reference Manual》 2.2版,
     1999, 3.4.2节)

在tms结构中的系统时间(译者注:tms结构可由times函数获得,
          它保存四个数据用于记录进程使用中央处理器
          (CPU:Central Processing Unit)的时间,包括:用户时间,系统时间,
          用户各子进程合计时间,系统各子进程合计时间)

资源使用(resource utilizations)设定为0

阻塞信号集初始化为空集(译者注:原文此处不明确,
          译文根据fork函数手册页稍做修改)

不继承由timer_create函数创建的计时器

不继承异步输入和输出

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xjh_Love_paopao/archive/2008/12/26/3612519.aspx

fork出的子进程和父进程的继承关系【转载】的更多相关文章

  1. fork之后,子进程从父进程那继承了什么(转载)

    转载自:https://blog.csdn.net/xiaojun111111/article/details/51764389 知道子进程自父进程继承什么或未继承什么将有助于我们.下面这个名单会因为 ...

  2. fork()调用使子进程先于父进程被调度

    由于内核使用写时复制机制,fork之后父子进程是共享页表描述符的,如果让父进程先执行,那么有很大几率父进程会修改共享页表指向的数据,那么内核此时必须给父进程分配并复制新的页表供父进程修改使用,那么如果 ...

  3. linux的fork()函数具体解释 子进程复制父进程什么

    #include<stdio.h>   #include<string.h>   #include<stdlib.h>   #include<unistd.h ...

  4. Android5.1.1源码 - zygote fork出的子进程如何权限降级

    前言 所有Android应用进程都是zygote fork出来的,新fork出来的应用进程还保持着root权限,这显然是不被允许的,所以这个fork出来的子进程的权限需要被降级,本文说的就是Andro ...

  5. 异步回收fork出的子进程(僵尸进程)

    #include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...

  6. fork 子进程,父进程对于变量的共享

    经过代码的练习发现: fork创建的子进程会完全复制父进程的代码包括变量,既复制fork之前创建的变量. 但是在创建子进程后,子进程与父进程对同一个变量的改变将相互不受影响,即使获取同一变量的地址是一 ...

  7. 【转】Linux杀死fork产生的子进程的僵尸进程defunct

    僵尸进程 就是 已经结束,但是还没有清理出去的.用kill -9 $PID 也无法杀死. 所以程序中应该避免出现僵尸进程. 用fork之后,父进程如果没有wait /waitpid 等待子进程的话,子 ...

  8. fork、父进程和子进程

    进程 什么是进程?进程是一个运行中的程序实体,拥有独立的堆栈.内存空间和逻辑控制流. 这是标准的进程概念.让我们通过操作系统的fork函数看看这个抽象的概念是怎么在进程的实现中体现出来的. 构成要素 ...

  9. 【LINUX】主进程、父进程、子进程、守护进程的概念

    一.摘要 详解父进程.子进程.守护进程的区别,例子稍候补充 二.定义区别 主进程 程序执行的入口,可以理解为常用的main 函数 父进程 对于子进程而言, 子进程的创造者,可有多个子进程. 任何进程都 ...

随机推荐

  1. Introduction the naive“scull” 《linux设备驱动》 学习笔记

    Introduction the naive "scull" 首先.什么是scull? scull (Simple Character Utility for Loading Lo ...

  2. 枚举与剪枝_观察算式(比标准答案还要牛B)

    观察算式 观察以下的算式: △△△ * △△ = △△△△ 某3位数乘以2位数,结果为4位数 要求:在9个△所代表的数字中.1~9的数字恰好每一个出现1次. 暴力破解代码: package lianx ...

  3. 如何查看npm配置?

    npm config list //查看基本配置 npm config list -l //查看所有配置 npm本地安装与全局安装有什么区别? npm install grunt // 本地安装,则是 ...

  4. HTML系列(六):划分文档结构

    常见的网页结构布局是酱紫的,真是美美哒^O^: 一.添加基本标题h1~h6(没什么好说的): 二.标题分组hgroup <hgroup>用来将标题和子标题进行分组.如果一篇文章articl ...

  5. CentOS修改系统默认语言与编码

    有时候在安装CentOS无意中把默认语言设置为中文,而部分SSH软件不支持中文编码,所以在远程管理的时候会出现些乱码的现象.   如何修改CentOS的默认语言呢? 请先使用root权限帐户登陆 一. ...

  6. IOS开发-UIView之动画效果的实现方法(合集)

    http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化 ...

  7. JDK源码学习--String篇(-)

    工作三年了,用了三年的JAVA,突然发现竟然没有好好的看下JDK的源码,整天用着的String,只是大概知道怎么回事,其中的实现逻辑却是一头雾水. 知耻而后勇,加油!!! java.lang.Stri ...

  8. Linux学习之挂载操作

    一.挂载U盘 1.使用命令:fdisk -l,查看系统硬盘和分区情况 2.插入优盘,再次用fdisk -l命令查看     大家可以发现多了一个硬盘/dev/sdb和它的一个分区/dev/sdb1 3 ...

  9. R与数据分析旧笔记(五)数学分析基本

    R语言的各种分布函数 rnorm(n,mean=0,sd=1)#高斯(正态) rexp(n,rate=1)#指数 rgamma(n,shape,scale=1)#γ分布 rpois(n,lambda) ...

  10. IronPython初体验和实战集合等类型转换和类型匹配

    人老了,做什么都累~学到了这么多技术,从最早C到C++再到JAVA再到C#,最终都是为了改善产品,改善系统的可维护性.众所周知C#,C++,C都是强类型语言,什么情况都得定义一些实体类来改变业务模型, ...