msheng_yeb 发表于 2012-12-16 21:07

apue关于fork的疑问

8.3节,说:
子进程获得父进程的"数据空间"、"堆"、和"栈"的副本......父、子进程共享正文段(见7.6节)。

我想这里的"数据空间"至少包括"初始化数据段"和"非初始化数据段",那么在栈底地址0xC000 0000以上的命令行参数和环境变量包不包括在里面呢?

fayewangfans 发表于 2012-12-17 00:02

0xC000 0000以上就是内核空间了,是0xc000 0000一下吧。LZ打字打错了?
环境变量肯定是继承父进程的了。

msheng_yeb 发表于 2012-12-17 11:37

回复 2# fayewangfans

我也觉得环境变量是继承父进程的,只是"数据空间"这个词,我找不到都由什么组成。

0xC000 0000之下是栈底,之上是命令行参数和环境变量(apue,P153)


   

fayewangfans 发表于 2012-12-18 23:40

你必须去查一下linux虚拟地址的划分规则。我本来是想往深里讲的,怕我说不清楚反而让你困惑。
你也可以去了解一下内核是怎样创建进程的,写时复制是一个亮点。回复 3# msheng_yeb


   
页: [1]
查看完整版本: apue关于fork的疑问