fork出的子进程和父进程的继承关系【转载】
【原文地址】http://blog.163.com/dengjingniurou@126/blog/static/53989196200962924412524/
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出的子进程和父进程的继承关系【转载】的更多相关文章
- fork之后,子进程从父进程那继承了什么(转载)
转载自:https://blog.csdn.net/xiaojun111111/article/details/51764389 知道子进程自父进程继承什么或未继承什么将有助于我们.下面这个名单会因为 ...
- fork()调用使子进程先于父进程被调度
由于内核使用写时复制机制,fork之后父子进程是共享页表描述符的,如果让父进程先执行,那么有很大几率父进程会修改共享页表指向的数据,那么内核此时必须给父进程分配并复制新的页表供父进程修改使用,那么如果 ...
- linux的fork()函数具体解释 子进程复制父进程什么
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<unistd.h ...
- Android5.1.1源码 - zygote fork出的子进程如何权限降级
前言 所有Android应用进程都是zygote fork出来的,新fork出来的应用进程还保持着root权限,这显然是不被允许的,所以这个fork出来的子进程的权限需要被降级,本文说的就是Andro ...
- 异步回收fork出的子进程(僵尸进程)
#include <stdio.h> #include <stdlib.h> #include <signal.h> #include <unistd.h&g ...
- fork 子进程,父进程对于变量的共享
经过代码的练习发现: fork创建的子进程会完全复制父进程的代码包括变量,既复制fork之前创建的变量. 但是在创建子进程后,子进程与父进程对同一个变量的改变将相互不受影响,即使获取同一变量的地址是一 ...
- 【转】Linux杀死fork产生的子进程的僵尸进程defunct
僵尸进程 就是 已经结束,但是还没有清理出去的.用kill -9 $PID 也无法杀死. 所以程序中应该避免出现僵尸进程. 用fork之后,父进程如果没有wait /waitpid 等待子进程的话,子 ...
- fork、父进程和子进程
进程 什么是进程?进程是一个运行中的程序实体,拥有独立的堆栈.内存空间和逻辑控制流. 这是标准的进程概念.让我们通过操作系统的fork函数看看这个抽象的概念是怎么在进程的实现中体现出来的. 构成要素 ...
- 【LINUX】主进程、父进程、子进程、守护进程的概念
一.摘要 详解父进程.子进程.守护进程的区别,例子稍候补充 二.定义区别 主进程 程序执行的入口,可以理解为常用的main 函数 父进程 对于子进程而言, 子进程的创造者,可有多个子进程. 任何进程都 ...
随机推荐
- uva 639 Don't Get Rooked 变形N皇后问题 暴力回溯
题目:跟N皇后问题一样,不考虑对角冲突,但考虑墙的存在,只要中间有墙就不会冲突. N皇后一行只能放一个,而这题不行,所以用全图暴力放棋,回溯dfs即可,题目最多就到4*4,范围很小. 刚开始考虑放一个 ...
- hdu-4468-Spy-KMP+贪心
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4468 题目意思: 给你一个串r,求一个串s,使得s的前缀1+s的前缀2+s的前缀3+...+s的前缀 ...
- 【攻防实战】SQL注入演练!
这篇文章目的是让初学者利用SQL注入技术来解决他们面临的问题, 成功的使用它们,并在这种攻击中保护自己. 1.0 介绍 当一台机器只打开了80端口, 你最依赖的漏洞扫描器也不能返回任何有用的内容, 并 ...
- 最新版SDWebImage的使用
我之前写过一篇博客,介绍缓存处理的三种方式,其中最难,最麻烦,最占内存资源的还是图片缓存,最近做的项目有大量的图片处理,还是采用了SDWebImage来处理,但是发现之前封装好的代码报错了.研究发现, ...
- 腾讯QQ首次在PC端采用气泡式聊天界面(from:36kr)
小伙伴们,你们是否已经发觉,曾经爱过的姑娘在不知不觉中已变了模样,曾经鲜艳的红领巾也不再飘荡于前胸,而曾经最熟悉的QQ电脑 UI,竟在不知不觉中改头换面了. 没关系,少年,还不晚,今天,让我们携起手来 ...
- [Java]使用队列求解josephus问题
约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环. 有个囚犯站成一个圆圈,准备处决.首先从一个人开始,越过个人(因为第一个人已 ...
- jquery.validate 一些技巧
1.Validator.element() Validates a single element, returns true if it is valid, false otherwise. http ...
- 为过程或函数sp_Adduser指定了过多的参数
前些天写用户注册模块,用存储过程添加用户,一开始就报“为过程或函数sp_Adduser指定了过多的参数”.仔细检查数据层的用户添加函数,结果在为存储过程添加sqlparameter参数的时候,数组给写 ...
- linux环境变量配置总结
LD_LIBRARY_PATH: 动态库的查找路径设置:方法一: export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 但是登出后就失效方法二: 修改~/.bash ...
- Sencha Touch 2 结合HTML5的本地存储创建数据库实现增、删、改、查
大家好!我是范范.本人刚接触ST2到现在刚刚两个月,6月1号接的项目,那时才知道有Sencha Touch2这个东西,到现在两个月了期间的幸酸就不说了.今天说说在项目中用到的HTML5的本地存储.可能 ...