NOMBRE¶
putenv - cambia o añade una variable de ambiente
SINOPSIS¶
#include <stdlib.h>
int putenv(char *cadena);
DESCRIPCIÓN¶
La función
putenv() añade o cambia el valor de variables de
entorno o ambiente. El argumento
cadena es de la forma
nombre=
valor. Si
nombre no existe ya en el ambiente,
entonces
cadena se añade al entorno. Si
nombre sí
existe, entonces el valor de
nombre en el ambiente se cambia a
valor. La cadena apuntada por
cadena se convierte en parte del
entorno, por lo que cambiar la cadena modifica el entorno.
VALOR DEVUELTO¶
La función
putenv() devuelve cero si acaba bien, ó -1 en
caso de error.
ERRORES¶
- ENOMEM
- Espacio insuficiente para alojar el nuevo ambiente.
NOTA¶
No es necesario que la función
putenv() sea reentrante, y la de
libc4, libc5 y glibc2.0 no lo es, pero la versión de glibc2.1
sí.
Descripción para libc4, libc5, glibc: si el argumento
cadena es de
la forma
name, y no contiene el carácter `=', entonces la
variable
name se elimina del entorno. Si
putenv() tiene que
reservar un nuevo array
environ, y el array previo también fue
reservado por
putenv(), entonces será liberado. En ningún
caso se liberará el anterior almacenamiento asociado a la propia
variable de entorno.
Las versiones de libc4 y libc5 siguen SUSv2: se usa el puntero
cadena
dado a
putenv(). En particular, esta cadena se convierte en parte del
entorno. El cambiarla después modificará el entorno. (De esta
manera, es un error llamar a
putenv() pasando como argumento una
variable automática, y después volver de la función
invocadora mientras
cadena forma todavía parte del entorno.) Sin
embargo, glibc 2.0-2.1.1 difieren: se usa una copia de la cadena. Por un lado,
esto provoca una pérdida de memoria y, por otro lado, viola SUSv2. Esto
se ha solucionado en glibc2.1.2.
La versión de BSD4.4, como la de glibc 2.0, usa una copia.
SUSv2 elimina `const' del prototipo, y así lo hace glibc 2.1.3.
SVID 3, POSIX, BSD 4.3
VÉASE TAMBIÉN¶
getenv(3),
setenv(3),
clearenv(3),
unsetenv(3),
environ(7)