Provided by: manpages-es_1.55-3_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)