遍历文件行并将变量导出到env

时间:2019-02-02 17:13:11

标签: c

我实际上是试图遍历文件,并为当前c程序的当前子进程从文件中导出所有变量,所以我认为导出可以实现我想要的功能,但问题是我缺乏正确的方法。 你能帮忙吗?

https://del.dog/adoduyegig.cc

void parse_file(char* filename) {
    regex_t reg;
    FILE* file;
    char line[20];
    char buf[250];
    int regs=regcomp(&reg,"([^#]+)(\s*)([a-zA-Z0-9_-]+)=([a-zA-Z0-9_-]+).*", REG_EXTENDED);

    if(!filename)
        filename="a.sh";

    if(!(file=fopen(filename,"r")))
        printf("Can't locate %s",filename);

    while(fgets(line, sizeof(line), file)) {
        if(!(regs=regexec(&reg, line, 0, NULL, 0))) {
            sprintf(buf, "export %s",line);
            system(buf);
        }
    }
    regfree(&reg);
    fclose(file);
}

1 个答案:

答案 0 :(得分:0)

为了让环境变量设置为一个子进程,你可以

  • 创建char *的 envp 向量,以将其提供给int execvpe(const char *file, char *const argv[],char *const envp[]);或等效函数,向量中的每个条目的形式均为“ a = b”
  • 或者如果当前程序可以使用int setenv(const char *name, const char *value, int overwrite);为所有必需变量设置环境不是问题,然后创建您的子进程