在Linux下调用fork()
系统调用时,父进程和子进程共享相同的数据。这是什么类型的数据? (例如堆数据还是什么?)
我的意思是如果有所有内存(堆栈,堆和文本)的副本,那么这是低效的。必须有其他事情发生。
Copy-on-write告诉我,在写入之前,所有内容都不会重复。
答案 0 :(得分:2)
父进程和子进程不共享任何数据。不是因为另一个过程会看到一个过程的变化。在fork时,子进程在数据方面与父进程完全相同(但并非所有内容都重复 - 请参阅fork手册页以获取确切的详细信息)。对于所有全局数据,堆和堆栈都是重复的。但同样,请注意它是"重复"不是"分享"。