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);