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)

GNU                                               8 abril 1993                                         PUTENV(3)