原理就是把配置文件加载到环境变量(不是全局的环境变量,只是一个子shell的环境变量)。常规的配置文件格式一般为"key"="value"这种格式。类似shell中的变量赋值,如果在这个语句前面加上关键字 export 就可以声明这个变量为当前 shell 的环境变量(注意,不是全局的那种哦),然后在 C 程序中使用 getenv() 函数获取这个环境变量即可。简单的实现如下:(实际过程中,需要另外写加载配置的脚本,不能把 conf 直接当作脚本)
m.conf
export a=123
export b=234
export c=345
getconfig.c
#include <stdlib.h>
#include <stdio.h>
int main(){
char *str[3];
char *key[] = {"a","b","c"};
int i = 0;
for(;i < 3; ++i){
str[i] = getenv(key[i]);
}
i = 0;
for(;i < 3; ++i){
printf("%s=%s\n",key[i],str[i]);
}
return 0;
}
load_getconfig.sh
#!/bin/bash
. ./m.conf
./getconfig