- 头文件:<unistd.h>
- 功能:在一个进程中调用其他进程
- 分类依据
-
l (list) 命令行参数列表
p (path) 搜素file时使用path变量
v (vector) 使用命令行参数数组
e (environment) 使用环境变量数组,不使用进程原有的环境变量,设置新加载程序运行的环境变量
-
- 分类①:带l的exec函数
- 具体说明:表示后边的参数以可变参数的形式给出且都以一个空指针结束。这里特别要说明的是,程序名也是参数,所以第一个参数就是程序名。
- execl(文件路径,命令行参数列表,NULL);
- 文件路径
- 命令行参数:argv[0],argv[1],……
- NULL:最后一个参数必须用NULL结束\
- 例:excel("/2022/0303/progress","ls","-al","/etc/passwd",NULL)
- /*执行/progress/ls -al/etc/passwd*/
- execlp(文件路径,命令行参数列表,NULL);
- 文件路径:搜素file时使用path变量
- execle();
- 分类②:带p的exec函数
- 具体说明:表示第一个参数无需给出具体的路径,只需给出函数名即可,系统会在PATH环境变量中寻找所对应的程序,如果没找到的话返回-1。
- 分类③:带v的exec函数
- 具体说明:表示命令所需的参数以char *arg[]形式给出且arg最后一个元素必须是NULL
- execv
- execvp
- execvp();
- 例
- 使用环境变量数组,不使用进程原有的环境变量,设置新加载程序运行的环境变量
- execve(文件路径,命令行参数数组,环境变量数组));
- 例
-
命令行参数数组——char *argv[ ]={"ls","-al","/etc/passwd",(char *)0};
环境变量数组———char *env[ ]={"PATH=/bin",0};
execve("/2022/0303/progress",argv,env);
-
- execv();
- execvp();
- 分类④:带e的exec函数
-
环境变量- 环境变量相当于“快捷键”。
- 一个“HOME=/home/ACCP286”的环境变量指明你在这个电脑上的个人主目录是“/home/ACCP286”,你每次要回到个人主目录时,不需要输入“cd /home/ACCP286”,只需要“cd $HOME”或者在文件管理器的地址栏输“$HOME”即可;你写一个脚本程序,用到你的个人主目录,也只需要写“$HOME”而不需要写“/home/ACCP286”。
- 一个“PATH=/bin:/usr/bin:/usr/local/bin:/usr/local/jdk/bin:...”环境变量高速操作系统,当接到用户送入的命令时,依次检索“/bin”、“/usr/bin”、“/usr/local/bin”、“/usr/local/jdk/bin”等目录,直到找到用户输入的命令。
- PATH环境变量
- path(环境变量)是dos以前的内部命令,windows继续沿用至今。用作运行某个命令的时候,本地查找不到某个命令或文件,会到这个声明的目录中去查找。
- 一般设定java的时候为了在任何目录下都可以运行bin文件夹下的命令。就将java的bin目录声明到path中。
- 在dos下运行path命令就可以设定或查看。在windows中要在系统设置中设定。