Ank*_*rma 4 c++ shell scripting
这个shell脚本
#!/bin/csh
set VAR=12345
echo $VAR
Run Code Online (Sandbox Code Playgroud)
将和平地输出12345在shell.我需要使用C++在代码的某些部分执行相同的操作:
string str = "12345";
retValue="set var1= "+str;
system(retValue1.c_str());
system("echo $var1");
Run Code Online (Sandbox Code Playgroud)
这不会创建系统变量var1和echos null,这是可以理解的,因为每个系统函数都会创建具有不同环境变量的子进程.所以我使用一个系统函数将它们组合如下......但它再次回声为null.
retValue="set var1= "+str;
retValue1=retValue+";\n echo $var1";
system(retValue1.c_str());
Run Code Online (Sandbox Code Playgroud)
有人可以指导我通过C++设置系统变量.非常感谢提前!
Pau*_*l R 11
看看SETENV在<cstdlib>
:
#include <cstdlib>
setenv("VAR", "12345", true);
Run Code Online (Sandbox Code Playgroud)
您可以使用putenv()
。
#include <cstdlib>
...
putenv("VAR=12345");
Run Code Online (Sandbox Code Playgroud)
这很方便,但是字符串并没有被复制putenv
。这意味着如果您稍后修改它,那么您就修改了环境。这对于文字来说不是问题,但使用的方式形成字符串的方式std::string
并不容易与putenv()
.
另一种选择是使用setenv()
#include <cstdlib>
...
setenv("VAR", "12345", true);
Run Code Online (Sandbox Code Playgroud)
使用setenv()
,将创建输入的副本,并且您可以在调用后安全地处理字符串setenv()
。