fork后父子进程共享资源
- 子进程是父进程的副本。例如,子进程获得父进程数据空间、堆和栈的副本。注意,这是子进程所拥有的副本。父进程和子进程并不共享这些存储空间部分。父进程和子进程共享正文段。
- 子进程对变量所做的改变并不影响父进程中该变量的值。
- fork后子进程只是获得了父进程的副本,所有变量的变更都只在各自进程中有效。
fork后子进程和父进程共享的资源还包括
- 打开的文件
- 实际用户ID、实际组ID、有效用户ID、有效组ID
- 添加组ID
- 进程组ID
- 会话期ID
- 控制终端
- 设置-用户-ID标志和设置-组-ID标志
- 当前工作目录
- 根目录
- 文件方式创建屏蔽字
- 信号屏蔽和排列
- 对任一打开文件描述符的在执行时关闭标志
- 环境
- 连接的共享存储段(共享内存)
- 资源限制
父子进程之间的区别是:
- fork的返回值
- 进程ID
- 不同的父进程ID
- 子进程的tms_utime,tms_stime,tms-cutime以及tms_ustime设置为0
- 父进程设置的锁,子进程不继承
- 子进程的未决告警被清除
- 子进程的未决信号集设置为空集