Provided by: manpages-fr_1.67.0-1_all bug

NOM

       putenv - Ajouter ou modifier une variable d’environnement.

SYNOPSIS

       #include <stdlib.h>

       int putenv (char *string);

DESCRIPTION

       La  fonction  putenv()  ajoute  ou  modifie  la  valeur  d’une variable
       d’environnement. L’argument string est une chaîne de caractères  de  la
       forme  nom=valeur.   Si  nom  n’existe  pas  dans  l’environnement,  la
       variable est ajoutée.  Si nom existe, alors la valeur  de  la  variable
       d’environnement  nom  est  remplacée par valeur.  La chaîne pointée par
       string  devient  partie  intégrante  de  l’environnement,   ainsi   une
       modification de cette chaîne change l’environnement.

VALEUR RENVOYÉE

       La  fonction  putenv() renvoie 0 si elle réussit, ou -1 si elle échoue,
       auquel cas errno contient le code d’erreur.

ERREURS

       ENOMEM Pas assez de mémoire.

NOTES

       La fonction putenv() n’a  pas  besoin  d’être  réentrante,  celles  des
       bibliothèques  libc4, libc5, et GlibC 2.0 ne le sont pas, contrairement
       à celle de la GlibC 2.1.

       Description pour libc4, libc5 et GlibC : Si la chaîne string est de  la
       forme  nom,  sans contenir de signe ‘=’, la variable du nom indiqué est
       supprimée de l’environnement.  Si  putenv()  doit  allouer  un  nouveau
       tableau  environ,  et si le tableau précédent avait déjà été alloué par
       putenv(), alors il sera libéré. En aucun  cas,  l’espace  correspondant
       aux chaînes d’environnement proprement dites ne sera libéré.

       Les versions des bibliothèques libc4, lib5 et GlibC 2.1.2 se conforment
       aux spécifications SUSv2 : le pointeur string transmis à  putenv()  est
       utilisé.   En  particulier  la  chaîne  devient  partie  intégrante  de
       l’environnement, si on la modifie par  la  suite,  l’environnement  est
       modifié.   (C’est  donc une erreur d’appeler putenv() avec une variable
       automatique en argument puis de revenir de la  fonction  alors  que  la
       chaîne  est toujours dans l’environnement).  Toutefois, les GlibC 2.0 -
       2.1.1 diffèrent : une copie de la chaîne est effectuée. D’une part cela
       crée une fuite mémoire, d’autre part on viole les spécifications SUSv2.
       Ceci a donc été corrigé dans la Glib 2.1.2.

       La version BSD 4.4 effectue aussi une copie.

       Dans les specifications SUSv2, le ‘const’ a été supprimé du  prototype.
       C’est aussi le cas dans GlibC 2.1.3.

CONFORMITÉ

       SVID 3, POSIX, BSD 4.3

VOIR AUSSI

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

TRADUCTION

       Christophe Blaess, 1996-2003.