execve系统调用
execve系统调用
我们前面提到了, fork, vfork等复制出来的进程是父进程的一个副本, 那么如何我们想加载新的程序, 可以通过execve来加载和启动新的程序。...同时我们需要一种方法来保存可执行程序的信息, 比如可执行文件的路径, 运行的参数和环境变量等信息,即linux_bin_prm结构
struct linux_bin_prm结构描述一个可执行程序
linux_binprm...linux支持其他不同格式的可执行程序, 在这种方式下, linux能运行其他操作系统所编译的程序, 如MS-DOS程序, 活BSD Unix的COFF可执行格式, 因此linux内核用struct...程序的加载do_execve_common和do_execveat_common
早期linux-2.4中直接由do_execve实现程序的加载和运行
linux-3.18引入execveat之前...do_execve调用do_execve_common来完成程序的加载和运行
linux-3.19~至今引入execveat之后do_execve调用do_execveat_common来完成程序的加载和运行