进程fork
是子进程,并在子进程中调用exec()
。
通过写时复制,在fork
父进程和子进程共享内存之后。
当子进程调用exec()
加载另一个进程时,Linux是否会将父内存复制到新内存,而子进程也会将另一个进程加载到这个新内存中?如果是这样,这是否意味着在执行fork-exec时,使用copy-on-write分叉的进程没有数据?
答案 0 :(得分:1)
使用copy-on-write,在
fork
父进程和子进程共享内存之后。
是阅读是的,不是写作。为分叉子进程创建一个新的地址空间,只有在子进程写入它之前才会填充它。
如果fork()
后面紧跟exec()
,则fork()
通常不会使用为孩子创建的地址空间,但会被新的地址空间替换,即创建的地址空间对于流程exec ()
编辑