_putenv
, _wputenv
Crea, modifica o quita variables de entorno. Hay disponibles versiones más seguras de estas funciones; consulte _putenv_s
, _wputenv_s
.
Importante
Esta API no se puede usar en aplicaciones que se ejecutan en Windows en tiempo de ejecución. Para obtener más información, vea Funciones de CRT no admitidas en aplicaciones de la Plataforma universal de Windows.
Sintaxis
int _putenv(
const char *envstring
);
int _wputenv(
const wchar_t *envstring
);
Parámetros
envstring
Definición de cadena de entorno.
Valor devuelto
Las funciones devuelven 0 si se ejecuta correctamente o -1 si se produce un error.
Comentarios
La función _putenv
agrega nuevas variables de entorno o modifica los valores de las existentes. Las variables de entorno definen el entorno en el que se ejecuta un proceso (por ejemplo, la ruta de búsqueda predeterminada para vincular bibliotecas a un programa). _wputenv
es una versión con caracteres anchos de _putenv
; el argumento envstring
para _wputenv
es una cadena de caracteres anchos.
De manera predeterminada, el estado global de esta función está limitado a la aplicación. Para cambiar este comportamiento, consulte Estado global en CRT.
Asignaciones de rutinas de texto genérico
Rutina Tchar.h |
_UNICODE and _MBCS no definido |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tputenv |
_putenv |
_putenv |
_wputenv |
El argumento envstring
debe ser un puntero a una cadena con el formato varname=value_string
, donde varname
es el nombre de la variable de entorno que se va a agregar o modificar y value_string
es el valor de la variable. Si varname
ya forma parte del entorno, su valor se sustituye por value_string
; si no es así, la nueva variable de varname
y su valor de value_string
se agregan al entorno. Una variable se puede quitar del entorno mediante la especificación de un parámetro value_string
vacío, es decir, con especificar solamente varname
=.
_putenv
y _wputenv
afectan solo al entorno que es local para el proceso actual; no puede usarlos para modificar el entorno de nivel de comando. Es decir, estas funciones funcionan solo en estructuras de datos accesibles para la biblioteca en tiempo de ejecución. No funcionan en el segmento de entorno creado para un proceso por parte del sistema operativo. Cuando finaliza el proceso actual, el entorno vuelve al nivel del proceso de llamada (en la mayoría de los casos, el nivel del sistema operativo). Sin embargo, el entorno modificado se puede pasar a cualquier proceso nuevo creado por _spawn
, _exec
o system
. Estos nuevos procesos obtienen los elementos nuevos agregados por _putenv
y _wputenv
.
No cambie una entrada de entorno directamente: en lugar de ello, use _putenv
o _wputenv
para cambiarla. Especialmente, la liberación directa de elementos de la matriz global _environ[]
podría dar lugar a que se obtenga acceso a memoria no válida.
_getenv
y _putenv
usan la variable global _environ
para obtener acceso a la tabla de entorno. _wgetenv
y _wputenv
usan _wenviron
. _putenv
y _wputenv
podrían cambiar el valor de _environ
y _wenviron
e invalidar así el argumento _envp
para main
y el argumento _wenvp
para wmain
. Por ello, es más seguro usar _environ
o _wenviron
para acceder a la información del entorno. Para obtener más información sobre la relación de _putenv
y _wputenv
con las variables globales, consulte _environ
, _wenviron
.
Nota:
Los grupos de funciones de _putenv
y _getenv
no son seguros para subprocesos. _getenv
podría devolver un puntero de cadena mientras _putenv
modifica la cadena, y se generarían errores aleatorios. Asegúrese de que las llamadas a estas funciones están sincronizadas.
Requisitos
Routine | Encabezado necesario |
---|---|
_putenv |
<stdlib.h> |
_wputenv |
<stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
Para obtener un ejemplo de cómo usar _putenv
, vea getenv
, _wgetenv
.
Consulte también
Control de procesos y entornos
getenv
, _wgetenv
_searchenv
, _wsearchenv