c - 写时复制如何在 fork-exec 中工作?

标签 c linux fork exec copy-on-write

<分区>

一个进程fork一个子进程,并在子进程中调用exec()。 使用写时复制,在 fork 之后,父进程和子进程共享内存。

当子进程调用exec()加载另一个进程时,Linux会不会将父内存复制到新内存,子进程也将加载另一个进程到这 block 新内存?如果是这样,是否意味着使用写时复制 fork 的进程在执行 fork-exec 时没有数据?

最佳答案

With copy-on-write, after fork the parent process and child process share the memory.

阅读是,写作不是。为 fork 的子进程创建一个新的地址空间,只是在子进程写入它之前不会填充它。

如果 fork() 紧跟 exec(),则通常在 fork() 时为子进程创建的地址空间是未使用但被新的替换,即为 exec ()ed 进程创建的那个。

关于c - 写时复制如何在 fork-exec 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496075/

相关文章:

c++ - 链接错误 c 和 c++( undefined reference )

linux - pthread_create 将终止具有相同 tid 的前一个线程?

c - 如何将流 (FILE *) 与标准输出相关联?

c - MISRA 违规 "441 - Float cast to non-float "

c - 编译后的 c 可执行文件如何知道如何表示特定内存地址处的一系列位?

linux - 查找用于呈现字符或包含字形的字体?

linux - 在 Mac OS X 下模拟 Linux 二进制文件

c - fork 多个进程并让父进程等待所有进程(在 C 中)

c - Telnet session ,fork 与 thread

multithreading - 线程/ fork 的效率