Linux系统的exec替换函数

fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序。

exec函数负责读取可执行行文件并将其载入地址空间开始运行。

我们有六种不同的exec函数可供使用,它们常常被统称为exec函数。

下面这几个是exec函数的库函数,它们都依存于execve系统调用函数:

 execve系统调用函数:

返回值:成功不返回,出错返回-1

file参数:其中filename等于path,取路径名为参数。file取文件名作为参数(函数会自行去PATH环境变量里面找路径)。

arg参数:其中以arg为名的都要求将新程序的每个命令行参数都说明为一个单独的参数,最后以空指针结尾。

                以argv[]为名的则应先构造一个指向各参数的指针数组,然后将该数组地址作为这三个函数的参数。

envp参数:允许构造一个环境变量的数组。

使用演示:

因为六个函数使用起来类似,我只演示了execve函数,使用了路径名,自己构造的argv和默认的envp环境变量。

 运行结果:

可以看到ps -f的pid就是main函数的pid,说明ps -f就是main函数替换后的命令。

猜你喜欢

转载自blog.csdn.net/HDong99/article/details/85039147