getenv, _wgetenv
Obtiene un valor del entorno actual.Versiones más seguras de estas funciones están disponibles; vea getenv_s, _wgetenv_s.
Importante |
---|
Esta API no se puede utilizar en las aplicaciones que se ejecutan en tiempo de ejecución de Windows.Para obtener más información, vea Funciones CRT no compatibles con /ZW. |
char *getenv(
const char *varname
);
wchar_t *_wgetenv(
const wchar_t *varname
);
Parámetros
- varname
Nombre de la variable de entorno.
Valor devuelto
Devuelve un puntero a la entrada de una tabla de entorno que contiene varname.No es seguro modificar el valor de la variable de entorno mediante el puntero devuelto.Utilice la función de _putenv para modificar el valor de una variable de entorno.El valor devuelto es NULL si varname no se encuentra en la tabla del entorno.
Comentarios
La función de getenv busca en la lista de variables de entorno para varname.getenv no distingue entre mayúsculas y minúsculas en el sistema operativo Windows.getenv y _putenv utilizan la copia del entorno indicada por la variable global _environ para tener acceso al entorno.getenv sólo funciona en las estructuras de datos accesibles a la biblioteca en tiempo de ejecución y no en el entorno “segmento” creado para el proceso por el sistema operativo.Por consiguiente, los programas que utilizan el argumento de envp a principal o a wmain pueden recuperar información no válida.
Si varname es NULL, esta función invoca un controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, conjuntos errno de esta función a EINVAL y devuelven NULL.
_wgetenv es una versión con caracteres anchos de getenv; el argumento y el valor devuelto de _wgetenv son cadenas de caracteres.La variable global de _wenviron es una versión con caracteres anchos de _environ.
En un programa de MBCS (por ejemplo, en un programa ASCII de SBCS), _wenviron inicialmente es NULL porque el entorno se compone de las cadenas de multibyte- carácter.A continuación, en la primera llamada a _wputenv, o en la primera llamada a _wgetenv si existe un entorno (MBCS) ya, un entorno correspondiente de cadena de caracteres es creado y después indicada por _wenviron.
De igual forma en un programa de Unicode (_wmain), _environ inicialmente es NULL porque el entorno se compone de las cadenas de caracteres.A continuación, en la primera llamada a _putenv, o en la primera llamada a getenv si existe el entorno a (Unicode) ya, un entorno correspondiente de MBCS es creado y después indicada por _environ.
Cuando dos copias del entorno (MBCS y Unicode) simultáneamente en un programa, el sistema de runtime debe mantener ambas copias, lo que da como resultado un runtime más lento.Por ejemplo, cada vez que se llame a _putenv, una llamada a _wputenv también se ejecuta automáticamente, de modo que las dos cadenas de entorno corresponden.
Precaución |
---|
Son raros, cuando el sistema en tiempo de ejecución mantiene una versión Unicode y una versión multibyte de entorno, estas versiones de dos entornos pueden no corresponda exactamente.Esto se debe a que, aunque ninguna mapas única de la cadena de multibyte- carácter en una cadena Unicode única, la asignación de una cadena Unicode única de una cadena de multibyte- carácter no es necesariamente única.Para obtener más información, vea _environ, _wenviron. |
[!NOTA]
Familias de _putenv y de _getenv de funciones no son seguros para subprocesos._getenv podría devolver un puntero de cadena mientras _putenv modifica la cadena, produciendo errores aleatorios.Asegúrese de que las llamadas a estas funciones están sincronizadas.
Asignaciones de la rutina de Genérico- texto
Rutina de TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tgetenv |
getenv |
getenv |
_wgetenv |
Para comprobar o cambiar el valor de la variable de entorno TZ, utilice getenv, de _putenv y de _tzset según sea necesario.Para obtener más información sobre TZ, vea _tzset y _daylight, timezone, y _tzname.
Requisitos
Rutina |
Encabezado necesario |
---|---|
getenv |
<stdlib.h> |
_wgetenv |
<stdlib.h> o <wchar.h> |
Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.
Ejemplo
// crt_getenv.c
// compile with: /W3
// 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>
int main( void )
{
char *libvar;
// Get the value of the LIB environment variable.
libvar = getenv( "LIB" ); // C4996
// Note: getenv is deprecated; consider using getenv_s instead
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" ); // C4996
// Note: _putenv is deprecated; consider using putenv_s instead
// Get new value.
libvar = getenv( "LIB" ); // C4996
if( libvar != NULL )
printf( "New LIB variable is: %s\n", libvar );
}
Equivalente en .NET Framework
System::Environment::GetEnvironmentVariable