进程的执行(exec)
-
execve
ececve系统调用可以将新程序加载到调用进程的内存空间,在这一过程中,将丢弃现有的进程的文本段,同时,进程的堆栈段,数据都会被新进程的相应部件所替换
在执行完各种初始化代码之后(比如C++的构造函数),新的程序会从main处开始执行
通常的使用方法是使用fork创建子进程,然后使用execve()执行新进程
#include<unistd.h> int execve(const char*pathname, char *const argv[], char *const envp[]) //永远都是返回失败
-
参数解析
pathname:准备载入当前进程空间的新程序的路径名,相对或者绝对都可以
argv:传递给新进程的命令行参数
envp:新程序的环境列表,一般直接赋为environ
-
进程id
execve()调用之后,进程的ID依旧保持不变
-
用户
execve()调用后,会以进程的有效用户ID(effective-id)去覆盖保存用户ID(saved-id)
-
-
exec的各种xd
#include<unistd.h> int execle(const char *pathname, const char *arg,