子进程从父进程继承了:
- 用户号UIDs和用户组号GIDs
- 进程组号
- 当前工作目录
- 根目录
- 环境
- 打开文件的描述符
- 共享内存
- 堆栈
- 信号控制设定
- 信号掩码
- 控制终端
- 文件方式创建屏蔽字
- 执行时关闭(close-on-exec) 标志
- 资源限制
- nice值 (由nice函数设定,数值越小,优先级越高)
子进程与父进程不同的:
- 进程号PID
- 各自的父进程号
- 自己的文件描述符和目录流的拷贝(译者注: 目录流由opendir函数创建,因其为顺序读取,顾称“目录流”)
- 子进程不继承父进程的进程正文, 数据和其它锁定内存
- 不继承异步输入和输出
经过fork()以后,父进程复制了自己的PCB块给子进程,而代码段、数据段、堆栈内存空间与子进程共享。
只有当子进程在运行中出现写操作时,才会产生中断,并为子进程分配内存空间。