Unix 如果执行';d程序比前一个程序大

Unix 如果执行';d程序比前一个程序大,unix,Unix,很明显,当一个程序是exec的内核时,基本上用exec的内核替换当前的内核,并且它使用相同的地址空间来执行。如果新的内核较小,那么就不会有问题。所以我的问题是,当我们执行一个比旧的内核的地址空间大的程序时,会发生什么情况。在Linux地址中执行exec()的进程的空间将替换为新的空间,该空间足够大,可以执行二进制文件。我想其他操作系统也是如此。这是合理的。如果地址空间不被替换,那么您执行的程序将继承所有内存映射(包括共享)、映射到地址空间的库(新程序可能不需要它们)、文件等。这有点奇怪。是的,我

很明显,当一个程序是exec的内核时,基本上用exec的内核替换当前的内核,并且它使用相同的地址空间来执行。如果新的内核较小,那么就不会有问题。所以我的问题是,当我们执行一个比旧的内核的地址空间大的程序时,会发生什么情况。

在Linux地址中执行exec()的进程的空间将替换为新的空间,该空间足够大,可以执行二进制文件。我想其他操作系统也是如此。这是合理的。如果地址空间不被替换,那么您执行的程序将继承所有内存映射(包括共享)、映射到地址空间的库(新程序可能不需要它们)、文件等。这有点奇怪。

是的,我同意空间已被替换,但它是否在内部检查新可执行文件的大小?如果大于,请不要通过指定与之对应的任何错误来替换。@user1053477否,请查看do_execve_common()