_putenv_s
, , _wputenv_s
, _tputenv_s
Crea, modifica o quita variables de entorno. Estas funciones son versiones de _putenv
, _wputenv
que tienen mejoras de seguridad, como se describe en Características de seguridad de CRT.
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.
Para _tputenv_s
, consulte Asignaciones de funciones de texto genérico.
Sintaxis
errno_t _putenv_s(
const char *varname,
const char *value_string
);
errno_t _wputenv_s(
const wchar_t *varname,
const wchar_t *value_string
);
Parámetros
varname
Nombre de la variable de entorno.
value_string
Valor en el que se establece la variable de entorno.
Valor devuelto
Devuelve 0 si se ejecuta correctamente; de lo contrario, devuelve un código de error.
Condiciones del error
varname |
value_string |
Valor devuelto |
---|---|---|
NULL |
cualquiera | EINVAL |
cualquiera | NULL |
EINVAL |
Si se produce una de las condiciones de error, estas funciones invocan un controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven EINVAL
y establecen errno
en EINVAL
.
Comentarios
La función _putenv_s
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_s
es una versión con caracteres anchos de _putenv_s
; el argumento envstring
para _wputenv_s
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 funciones de texto genérico
La función de la tchar.h
columna se asigna a la función de las demás columnas en función del juego de caracteres definido en tiempo de compilación.
Función tchar.h |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tputenv_s |
_putenv_s |
_putenv_s |
_wputenv_s |
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
; de lo contrario, la nueva variable varname
y su valor value_string
se agregan al entorno. Una variable se puede quitar del entorno especificando una cadena vacía (es decir, ""
) para value_string
.
_putenv_s
y _wputenv_s
afectan solo al entorno que es local para el proceso actual; no puede usarlos para modificar el entorno de nivel de comando. Solo funcionan en estructuras de datos a las que puede tener acceso la biblioteca en tiempo de ejecución y no en el "segmento" de entorno que el sistema operativo crea para un proceso. Cuando finaliza el proceso actual, el entorno vuelve al nivel del proceso de llamada, que en la mayoría de los casos es el nivel del sistema operativo. Sin embargo, el entorno modificado se puede pasar a los nuevos procesos que _spawn
, _exec
o system
crean. Estos nuevos procesos obtienen los nuevos elementos que _putenv_s
y _wputenv_s
agregan.
No cambie una entrada de entorno directamente: en lugar de ello, use _putenv_s
o _wputenv_s
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_s
usan la variable global _environ
para obtener acceso a la tabla de entorno. _wgetenv
y _wputenv_s
usan _wenviron
. _putenv_s
y _wputenv_s
pueden 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_s
y _wputenv_s
con las variables globales, vea _environ
, _wenviron
.
Nota:
Los grupos de funciones de _putenv_s
y _getenv_s
no son seguros para subprocesos. _getenv_s
podría devolver un puntero de cadena mientras _putenv_s
modifica la cadena y, por lo tanto, generarían errores aleatorios. Asegúrese de que las llamadas a estas funciones están sincronizadas.
Requisitos
Routine | Encabezado necesario |
---|---|
_putenv_s |
<stdlib.h> |
_wputenv_s |
<stdlib.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
Para obtener un ejemplo en el que se muestre cómo usar _putenv_s
, vea getenv_s
, _wgetenv_s
.
Consulte también
Control de procesos y entornos
getenv
, _wgetenv
_searchenv
, _wsearchenv