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)