程序设计:C语言 UNIX/LINUX 环境变量替换

编程入门 行业动态 更新时间:2024-10-22 14:42:07

<a href=https://www.elefans.com/category/jswz/34/1771020.html style=程序设计:C语言 UNIX/LINUX 环境变量替换"/>

程序设计:C语言 UNIX/LINUX 环境变量替换

        很多时候程序希望对配置参数做环境变量替换,这样自己省力用户也省力。

        通过env去一个一个替换当然是个办法,但是很麻烦啊,而且也不知道执行效果和用户以为的是不是一样。

        通过shell功能去做就比较简单了,而且效果和shell完全一致,用户不会迷惑。

        办法也很简单,执行echo指令,然后获取输出即可。获取输出有几种办法:

  • 通过输出转向>输出到文件,不过这要使用一个临时文件,一个tmp目录的临时文件或自行计划的临时文件,文件操作存在并发冲突的可能
  • 用popen执行命令获取输出,只使用管道,不涉及文件,没有并发问题

        代码:

	string & GetShellOutput(char const * cmd, string & output){char buf[1024];FILE * pf;output = "";//DEBUG_LOG << cmd << endi;if (NULL == (pf = popen(cmd, "r"))){thelog << "popen失败,无法执行环境变量替换 " << strerror(errno) << ende;return output;}while (NULL != fgets(buf, 1024, pf)){output += buf;}//DEBUG_LOG << output << endi;pclose(pf);return output;}string & ShellEnvReplace(string & str){string cmd = "echo " + str;bool hasNewLine = (str.size() > 0 && '\n' == str[str.size() - 1]);GetShellOutput(cmd.c_str(), str);if (!hasNewLine)str.erase(str.size() - 1);return str;}

        ShellEnvReplace执行环境变量替换,核心功能由GetShellOutput实现,自身额外处理了新行问题。这个方法获得的输出一定会包含一个换行符,如果输入字符串原来不是以换行符结束的就把输出的最后一个字符删掉。

        GetShellOutput详细参见:程序设计:C语言 调用命令行程序并获得输出 popen(源码)-CSDN博客

(这里是结束)

更多推荐

程序设计:C语言 UNIX/LINUX 环境变量替换

本文发布于:2023-12-03 11:08:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1654691.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:程序设计   环境变量   语言   UNIX   LINUX

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!