exec函数族:

使进程执行某一程序。成功无返回值,失败返回 -1

int execlp(const char *file, const char *arg, ...); 借助 PATH 环境变量找寻待执行程序

参1: 程序名

参2: argv0

参3: argv1

...: argvN

哨兵:NULL

 

int execl(const char *path, const char *arg, ...); 自己指定待执行程序路径。

int execvp();

ps ajx --> pid ppid gid sid

#include<stdio.h>

#include<unistd.h>

int main(void)

{

    //使用execl() 来调用其他的程序

 

     execlp("ls","ls","-a","-l",NULL); // 相当于在程序中调用ls 命令

     printf("error execlp");

     return 0;

}

 

execvp函数

  加载一个进程,使用自定义环境变量 env

Int execvp( const char* file , const char *argv[] );

变参形式:

(1)...

(2)argv[] ( main 函数也是变参函数,形式上等于 int main( int argc , char* argv0,... ) )

变参终止条件:(1)NULL结尾 (2)参数固定

execvp 于 execlp 参数形式不同,原理一致。

Char *argv[] = { "ls","-a","-l",NULL};

Execvp(ls,argv);

 

 exec函数族的一般规律,exec函数一旦调用成功及执行新的程序,不返回。只有失败的时候才返回,错误值-1。

 L (list)  命令行参数列表  execl()

 P( path ) 搜索文件用的path变量

 V( vector ) 使用命令行参数数组  execvp()

 E( environment ) 使用环境变量数组,不适用进程原来的环境变量,设置加载程序运行的环境变量。

上一篇:实验六 进程基础


下一篇:Dockerfile 指令详解1