orange's学习--第十章:exec函数

exec的语义很简单,它将当前的进程映像替换成另一个。也就是说,我们可以从硬盘上读取另一个可执行的文件,用它替换掉刚刚被fork出来的子进程,于是被替换的子进程摇身一边,就成了彻头彻尾的新鲜进程了。

execv( )所做的其实只是一件事,那就是向MM提供最终供调用exec的进程使用的堆栈。我们知道,main(  )函数接受两个参数:argc和argv,其中的argv看上去像个细绳,实际上另一端拴着一头牛呢。通过一个argv,我们可以得到用户输入的所有参数。

MM进程的do_exec()函数主要操作就是打开文件,把文件读入到内存中,并且安装ELF文件格式移动文件,准备好堆栈内容,并且设置好eip等于ELF文件入口地址,这样进程调度程序调度到该进程时,就会从入口地址开始执行。

orange's学习--第十章:exec函数

orange's学习--第十章:exec函数