getenv, _wgetenv 获取环境变量
2006-05-30 17:46
281 查看
getenv, _wgetenv
Get a value from the current environment.char *getenv( const char *varname );
wchar_t *_wgetenv( const wchar_t *varname );
Routine | Required Header | Compatibility |
getenv | <stdlib.h> | ANSI, Win 95, Win NT |
_wgetenv | <stdlib.h> or <wchar.h> | Win 95, Win NT |
Libraries
LIBC.LIB | Single thread static library, retail version |
LIBCMT.LIB | Multithread static library, retail version |
MSVCRT.LIB | Import library for MSVCRT.DLL, retail version |
Each of these functions returns a pointer to the environment table entry containing varname. It is not safe to modify the value of the environment variable using the returned pointer. Use the _putenv function to modify the value of an environment variable. The return value is NULL if varname is not found in the environment table.
Parameter
varname
Environment variable name
Remarks
The getenv function searches the list of environment variables for varname. getenv is not case sensitive in Windows NT and Windows 95. getenv and _putenv use the copy of the environment pointed to by the global variable _environ to access the environment. getenv operates only on the data structures accessible to the run-time library and not on the environment “segment” created for the process by the operating system. Therefore, programs that use the envp argument to main or wmain may retrieve invalid information.
_wgetenv is a wide-character version of getenv; the argument and return value of _wgetenv are wide-character
4000
strings. The _wenviron global variable is a wide-character version of _environ.
In an MBCS program (for example, in an SBCS ASCII program), _wenviron is initially NULL because the environment is composed of multibyte-character strings. Then, on the first call to _wputenv, or on the first call to _wgetenv if an (MBCS) environment already exists, a corresponding wide-character string environment is created and is then pointed to by _wenviron.
Similarly in a Unicode (_wmain) program, _environ is initially NULL because the environment is composed of wide-character strings. Then, on the first call to _putenv, or on the first call to getenv if a (Unicode) environment already exists, a corresponding MBCS environment is created and is then pointed to by _environ.
When two copies of the environment (MBCS and Unicode) exist simultaneously in a program, the run-time system must maintain both copies, resulting in slower execution time. For example, whenever you call _putenv, a call to _wputenv is also executed automatically, so that the two environment strings correspond.
[b]Caution[/b] In rare instances, when the run-time system is maintaining both a Unicode version and a multibyte version of the environment, these two environment versions may not correspond exactly. This is because, although any unique multibyte-character string maps to a unique Unicode string, the mapping from a unique Unicode string to a multibyte-character string is not necessarily unique. For more information, see _environ, _wenviron.
Generic-Text Routine Mappings
TCHAR.H Routine | _UNICODE & _MBCS Not Defined | _MBCS Defined | _UNICODE Defined |
_tgetenv | getenv | getenv | _wgetenv |
Example
/* GETENV.C: This program uses getenv to retrieve * the LIB environment variable and then uses * _putenv to change it to a new value. */ #include <stdlib.h> #include <stdio.h> void main( void ) { char *libvar; /* Get the value of the LIB environment variable. */ libvar = getenv( "LIB" ); if( libvar != NULL ) printf( "Original LIB variable is: %s/n", libvar ); /* Attempt to change path. Note that this only affects the environment * variable of the current process. The command processor's environment * is not changed. */ _putenv( "LIB=c://mylib;c://yourlib" ); /* Get new value. */ libvar = getenv( "LIB" ); if( libvar != NULL ) printf( "New LIB variable is: %s/n", libvar ); }
Output
Original LIB variable is: C:/progra~1/devstu~1/vc/lib New LIB variable is: c:/mylib;c:/yourlib
相关文章推荐
- Laravel 学习 .env文件 getenv 获得环境变量的值
- 为什么Java使用System.getenv()获取刚刚设置的环境变量时为空
- 禁用了$_ENV变量,后如何获取环境信息
- linux下getenv、putenv、setenv获取设置环境变量
- [置顶] getenv、setenv函数(获取和设置系统环境变量) 与 环境变量
- getenv、setenv函数 获取和设置系统环境变量
- 获取系统环境变量: ACE_OS::getenv
- 2通过程序获得环境变量,getenv(),setenv()函数和unsetenv()函数,env查看环境变量,echo输出指定的环境变量
- 获取tomcat中web.xml中定义的环境变量(env-entry)
- getenv、setenv函数 获取和设置系统环境变量
- getenv、setenv函数 获取和设置系统环境变量
- getenv、setenv函数 获取和设置系统环境变量
- Java的System.getProperty()方法可以获取系统变量和System.getenv()获取系统环境变量
- getenv和putenv在获取和设置环境变量中的使用
- 用system.env获取到的android的环境变量
- DumpEnvStrings.cpp(获取环境变量)
- Springboot yml获取系统环境变量的值
- linux 学习20170726 查看进程号及环境变量、获取字符串长度及shell版本
- cgi获取所有环境变量[C语言]
- python 获取环境变量,当前工作路径