Provided by: manpages-es_1.55-10_all bug

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.

CONFORME A

       SVID 3, POSIX, BSD 4.3

VÉASE TAMBIÉN

       getenv(3), setenv(3), clearenv(3), unsetenv(3), environ(7)