先来看一个题目:
当父进程调用fork()创建子进程之后,下列哪些变量在子进程中修改之后,父进程里也会相应地作出改动?
A.全局变量
B.局部变量
C.静态变量
D.文件指针
答案为D,解释如下:
fork()子进程和父进程共享的资源:
打开的文件
实际用户ID、实际组ID、有效用户ID、有效组ID
添加组ID
进程组ID
对话期ID
控制终端。
设置-用户-ID标志和设置-组-ID标志
当前工作目录
根目录
文件方式创建屏蔽字
信号屏蔽和排列
对任一打开文件描述符的在执行时关闭标志
环境
连接的共享存储段(共享内存)
资源限制
父、子进程之间的区别是:
fork的返回值
进程ID
不同的父进程ID
子进程的tms_utime,tms_stime,tms_cutime以及tms_ustime设置为0
父进程设置的锁,子进程不继承
子进程的未决告警被清除
子进程的未决信号集设置为空集