我实际上是试图遍历文件,并为当前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(®,"([^#]+)(\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(®, line, 0, NULL, 0))) {
sprintf(buf, "export %s",line);
system(buf);
}
}
regfree(®);
fclose(file);
}
答案 0 :(得分:0)
为了让环境变量设置为一个子进程,你可以
int execvpe(const char *file, char *const argv[],char *const envp[]);
或等效函数,向量中的每个条目的形式均为“ a = b” int setenv(const char *name, const char *value, int overwrite);
为所有必需变量设置环境不是问题,然后创建您的子进程