Variable d'environnement

andoid Messages postés 108 Date d'inscription samedi 31 mars 2012 Statut Membre Dernière intervention 16 juin 2013 - 27 oct. 2011 à 15:14
cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 - 3 nov. 2011 à 12:07
Bonjour j'ai un probléme sur mon code au faite je m'entraine pour comprendre les variables d'environnement : le code lit au clavier et dois créer une variables d'environnement genre tu tape CODE="SOURCE". Mais mon probléme est que mon getenv ne marche pas alors que putenv me signal qu'il a crée la variable voici mon code:

#include<stdio.h>
#include<stdlib.h>
#include
#include<string.h>
#define TAILLE 100


char** decouper(char* commande)
{
char *c=NULL;
char **tab=malloc((strlen(commande)+1)*sizeof(char*));
int i=0;

c = strtok(commande, "="");
do {
/*J'staock les commandes dans le tableau de char** afin de pouvoir utiliser exec et sa famille*/
tab[i]=c;

i++;
c = strtok(0,"="");

}while (c);


return tab;

}

int main ()
{

char commande[TAILLE];
char *concat=NULL;
fgets(commande,TAILLE,stdin);
int detecte=0,i=0,res_concat;
char ** tab;
char** recup;
char* variable;

if(strchr(commande,'=')) detecte =1;

if (detecte==1)
{


tab=decouper(commande);
concat=strcat(tab[0],"=");
concat=strcat(concat,tab[1]);


printf("concat=: %s\n",concat);

if(putenv(concat)==0)
{
recup=decouper(concat);
printf("recup[0]=%s\n",recup[0]);
variable=getenv(recup[0]);
if(variable==NULL)
printf("variable n'existe pas\n");
else
printf("%s=%s\n",recup[0], variable);
}
else
{


printf("echec création de la variable d'environnement\n");
}



}
}

1 réponse

cptpingu Messages postés 3835 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 1 novembre 2022 124
3 nov. 2011 à 12:07
Bonjour.

Je te rappelle que la création de variable d'environnement est locale. Si tu crées une variable d'environnement, elle n'existera que dans l'espace que tu as crée. Donc impossible de créer une variable d'environnement exploitable de "l'extérieur" à partir d'un programme.

C'est aussi vrai pour des sous shell.

Ex:
$(export TOTO=coucou) && echo $TOTO


Ne fonctionnera pas. Alors que ceci, oui:
export TOTO=coucou && echo $TOTO


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0