exec族

  • 头文件:<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();
  • 分类④:带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中要在系统设置中设定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值