在 C/C++ 语言中,这是我在 Unix 下解析环境变量的方法。fs_parm 指针将包含要扩展的可能环境变量的文件规范(或文本)。wrkSpc 指向的空间必须是 MAX_PATH+60 个字符长。echo 字符串中的双引号是为了防止处理通配符。大多数默认 shell 应该能够处理这个问题。
FILE *fp1;
sprintf(wrkSpc, "echo \"%s\" 2>/dev/null", fs_parm);
if ((fp1 = popen(wrkSpc, "r")) == NULL || /* do echo cmd */
fgets(wrkSpc, MAX_NAME, fp1) == NULL)/* Get echo results */
{ /* open/get pipe failed */
pclose(fp1); /* close pipe */
return (P_ERROR); /* pipe function failed */
}
pclose(fp1); /* close pipe */
wrkSpc[strlen(wrkSpc)-1] = '\0';/* remove newline */
对于 MS Windows,使用 ExpandEnvironmentStrings() 函数。