• linux多进程编程中,子进程继承父进程哪些东西


    子进程得到父进程东西的 拷贝,不是它们本身。

    父进程和子进程拥有独立的地址空间和PID参数

    子进程继承父进程

    • 环境(environment)变量
    • 堆栈
    • 连接的共享存储段(共享内存)
    • 打开文件的描述符(注意对应的文件的位置由父子进程共享,这会引起含糊情况)
    • 执行时关闭(close-on-exec) 标志 (译者注:close-on-exec标志可通过fnctl()对文件描述符设置,POSIX.1要求所有目录 流都必须在exec函数调用时关闭。更详细说明,参见《APUE》 W. R. Stevens, 1993, 尤晋元等译(以下简称《高级编 程》), 3.13节和8.9节)
    • 信号(signal)控制设定
    • nice值 (译者注:nice值由nice函数设定,该值表示进程的优先级,数值越小,优先级越高)
    • 进程调度类别(scheduler class) (译者注:进程调度类别指进程在系统中被调度时所属的类别,不同类别有不同优先级,根据进程调度类别和nice值,进程调度程序可计算出每个进程的全局优先级(Global process prority),优先级高的进程优 先执行)
    • 进程的资格 (真实(real)/有效(effective)/已保存(saved) 用户号(UIDs)和组号(GIDs))
    • 进程组ID、添加组ID
    • 对话期ID (Session ID) (译者注:译文取自《高级编程》,指:进程所属的对话期 (session)ID,一个对话期包括一个或多 个进程组,更详细说明参见《APUE》 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函数创建的计时器
    • 不继承异步输入和输出
    • 父进程设置的锁(因为如果是排他锁,被继承的话就矛盾了)
  • 相关阅读:
    codeforces 616B Dinner with Emma
    codeforces 616A Comparing Two Long Integers
    codeforces 615C Running Track
    codeforces 612C Replace To Make Regular Bracket Sequence
    codeforces 612B HDD is Outdated Technology
    重写父类中的成员属性
    子类继承父类
    访问修饰符
    方法的参数
    实例化类
  • 原文地址:https://www.cnblogs.com/Tavi/p/12514051.html
Copyright © 2020-2023  润新知