c++的getenv总是返回空值
C++ getenv always returns null value
我刚刚添加了环境变量"DataDir",但是getenv函数仍然返回空值。
下面是我的代码:const char *ret = getenv("DataDir");我重新启动电脑,它完成了。
您记得在运行程序之前导出变量吗?例如,如果您在linux上使用bash shell,通常应该使用export DataDir="..."
在windows上,如果您使用系统设置窗口设置环境变量,它不会立即传播到所有正在运行的程序。如果"I restart my computer and it done."的意思是"重启电脑解决了问题",那么我相信这就解释了问题所在。更改环境变量后,尝试关闭所有程序,然后启动CMD会话(或visual studio)并再次运行程序
您使用的是Windows系统吗?你通过控制面板设置环境变量了吗?如果是这样,那么它只影响在更改设置后启动的进程(您启动的程序)。如果您在命令提示符下运行,而命令提示符没有继承新的环境变量,那么您的程序也不会继承它。
重启后,所有新进程继承新的环境变量。
另一方面,如果设置了变量然后运行程序:
C:>set DataDir=blah
C:>.my_program
则您的程序将继承该变量(但它不会在重新启动时持续存在)。
类似的考虑也适用于Linux和其他系统,但细节有所不同。
请注意,根据您报告的症状,我只是猜测您使用的是什么系统。将来,在问题中提供这些信息会很有帮助(如果不相关,我们可以忽略它)。
相关文章:
- 返回空值的字符串值
- 为什么我的类工作正常,即使在返回垃圾值作为赋值运算符和空复制构造函数的返回之后
- 无法从Linux,C ++执行"my_script" python脚本"main(filename)"功能;pModule = PyImport_Import(pName);返回空值
- 动态强制转换返回空值
- SDL 表面返回空值
- QJsonObject 返回空值
- dynamic_cast<D *>(pb) 返回空值
- env->FindClass 函数返回空值
- C getCurrentThemename返回经典Windows主题的空值
- c++/openCV : cvConvert 返回空值
- TTF_OpenFont返回空值
- GetWindowTextA,GetWindowText在编辑控件上返回空值
- 方法调用返回空值
- C/C++ Cocos2dx 对象在调用调度后返回空值
- Win8 应用在 Win10 上崩溃 (D3D11CreateDevice 返回空值)
- 字符串流返回空值
- 返回空值或抛出异常
- 从索引越界的c++链表返回空值
- c++的getenv总是返回空值
- RapidXML first_node不返回空值