zoukankan      html  css  js  c++  java
  • exec函数组六个函数的用法和区别

    exec函数组有六个函数,分别是:

    #include <unistd.h>

    extern char **environ;

    int execl(const char *path, const char *arg, ...);
    int execlp(const char *file, const char *arg, ...);
    int execle(const char *path, const char *arg , ..., char * const envp[]);
    int execv(const char *path, char *const argv[]);
    int execvp(const char *file, char *const argv[]);
    int execve(const char *path, char *const argv[], char *const envp[]);

    这六个函数的可以这样区分:

    1、带 l 的表示参数要以list的方式给出,就是每个参数都用逗号分割,多个参数就给多个字符串

    2、带 v 的表示参数用vector的方式给出,即一个字符串数组指针

    3、带 p 的表示被调用的外部命令可以写成相对路径的方式,函数会到PATH环境变量中去搜索

    4、带 e 的表示可以自定义环境变量

    OK,现在应该已经清楚了,要注意的是,如果我们要求被调用的命令继承调用者的环境变量上下文,那么,可以用execv, execvp这样的函数;如果用了execve这样的函数,那么,千万注意第三个参数,即环境变量列表不能为NULL,如果为NULL,那么被调用的命令 就无法得到调用者的环境变量列表,如果要用execve这样的函数,要先保存当前的环境变量,然后再加入自定义的环境变量,最后放在第三个参数上。
  • 相关阅读:
    十三.基础邮件服务、parted分区工具、交换分区、链路聚合
    十二.虚拟Web主机
    十一.简单MariaDB数据库的管理
    十.iSCSI网络磁盘
    九.配置SMB共享(Samba共享)
    八.防火墙相关操作
    bzoj3132
    bzoj4753
    codeforces round #418 div 2
    ural1519
  • 原文地址:https://www.cnblogs.com/super119/p/2005603.html
Copyright © 2011-2022 走看看