手册页并没有说太多,但是它的实现规范更多,我更喜欢UNIX。
This此处的讨论消除了大多数混乱,尤其是已接受答案的评论部分。但是我仍然有一个疑问。
当带有exec *的子进程重新初始化了所有内容后,父进程如何恢复其地址空间
( exec* manpage says "This causes
the program that is currently being run by the calling process to be
replaced with a new program, with newly initialized stack, heap, and
(initialized and uninitialized) data segments")
由于两个进程都并行运行(假设父进程被子进程调用后恢复执行),因此它们如何同时访问堆/栈(现在需要有所不同)。仅当它们具有完全不同的虚拟地址空间时,才有可能。但是它在exec文档中没有写任何地方创建新的虚拟地址空间。
“新初始化的”是同一意思吗?