C++ 如何使用setenv()在c++;?
我需要导出几个变量,使它们在命令行中看起来像下面这样C++ 如何使用setenv()在c++;?,c++,command-line,setenv,C++,Command Line,Setenv,我需要导出几个变量,使它们在命令行中看起来像下面这样 export ROS_HOSTNAME=xxx
export ROS_HOSTNAME=xxx
<如何在C++中使用SENEVE()来实现?
谢谢。这里是setenv函数的签名
#include <stdlib.h>
最后一个布尔参数指示如果环境变量的值已经存在,是否要覆盖该值 从setenv()
手动输入:
简介
#include <stdlib.h>
int setenv(const char *envname, const char *envval, int overwrite);
或
为了你的案子。如果要覆盖可能存在的定义,则取决于
注意:
不能使用setenv()
将变量从进程导出到调用进程(shell)!
使用fork创建的子进程将继承当前进程环境定义,因此您的更改和添加也将继承这些定义。执行以下操作:
setenv("ROS_HOSTNAME", "xxx", true);
请注意它的概要:
#include <stdlib.h>
int setenv(const char *envname, const char *envval, int overwrite);
#包括
int setenv(常量字符*envname,常量字符*envval,int覆盖);
有关
setenv()
的更多详细信息,请参阅,您在问题上下文中提到标记的原因是什么?您需要“导出”到哪里?请详细说明!这些环境变量需要在什么环境中可见?如果它们只需要在调用setenv
的程序中可见,就可以了。如果您需要在运行程序后在shell中显示它们,请这样说;有(间接的)方法可以做到这一点,但除非你问我,否则我不会回答这个问题。“导出”是一个shell特性setenv()
始终“导出”environ
/envp
,除非向分叉子级传递自定义的envp
,即execle()
。
setenv("ROS_HOSTNAME","xxx",0); // does not overwrite
setenv("ROS_HOSTNAME", "xxx", true);
#include <stdlib.h>
int setenv(const char *envname, const char *envval, int overwrite);