begin process at 2012 05 30 11:00:35
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Général

 > 

putenv() et getenv()


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

putenv() et getenv()

mercredi 2 novembre 2011 à 19:17:56 | putenv() et getenv()

andoid

Bonjour,
Je viens de remarquer que setenv n'était pas POSIX et je voudrais donc utiliser putenv.
J'ai donc reproduit une fonction ou il y a exactement le code à l'interieur de ce main :
http://www.lsv.ens-cachan.fr/~parrenne/Cours/code/td2_putenv.c
dans la fonction, quand je fais des getenv la variable est bonne mais quand j'en sors et que je fais un getenv, elle n'existe plus.
Voila si vous pouvez m'aider.. :/
Merci d'avance.
jeudi 3 novembre 2011 à 10:29:25 | Re : putenv() et getenv()

buno

Administrateur CodeS-SourceS
Hello,
Vu le nombre de topics que tu ouvres, j'imagine que tu n'as toujours pas résolu ton souci.

dans la fonction, quand je fais des getenv la variable est bonne mais quand j'en sors et que je fais un getenv, elle n'existe plus.


Quand tu sors de quoi exactement?
Avec le code ci-dessous, getenv() me retourne bien la bonne valeur.
Code C/C++ :
#include <iostream>

int main(void)
{
  putenv("CODES=source");
  std::cout<<"Voici la valeur: "<< getenv("CODES") << std::endl;
  system("pause");
}

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 3 novembre 2011 à 10:54:05 | Re : putenv() et getenv()

andoid

J'ai résolu mes problémes et mon shell marche sauf que je dois tenir en compte les variables d'environnement.
/home/andoid/Bureau: bab="ls"
j'ai fait un putenv("bab=ls") qui fonctionne et getenv("bab") me retourne "ls" mais si le shell revient à l'etat initial et que je tape $bab il fait rien voici le code


void Gestion_V_Environnement(char* commande)
{


char **tab=malloc((strlen(commande)+1)*sizeof(char*));
char** recup;
char* variable;
char concat[TAILLE];
tab=Pipes(commande,"=\"");


strcpy(concat,"");
strcat(concat,tab[0]);
strcat(concat,"=");
strcat(concat,tab[1]);
putenv(concat);
variable=getenv(tab[0]);

if(variable==NULL)
printf("la variable n'existe pas\n");
else
executer(variable);
printf("\nLe positionnement de getenv=%s \n",variable);



free(tab);


}
jeudi 3 novembre 2011 à 11:44:14 | Re : putenv() et getenv()

buno

Administrateur CodeS-SourceS
Je ne comprends pas ce que tu veux dire. Ta variable d'environnement sera là tant que ton programme tourne. Mais si tu le fermes, tu fermes ton environnement courant et donc ta variable n'est plus là.
Je ne sais pas comment ça se passe sous Linux mais il me semble que sous Windows, si tu veux agir sur les variables d'environnement système, il faut modifier la base de registres.


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 3 novembre 2011 à 11:44:37 | Re : putenv() et getenv()

LA_Tupac

Membre Club
La modification de putenv() est locale au processus.
Donc quand le programme se ferme, les variables reviennent à la normale.
Pour que la modif reste, utilise system() et balance la commande linux qui modifie la variable.
ex:
Code C/C++ :
system("export PATH=$PATH:/home/user/mes_prog");

Attention, le programme devra être lancé avec les droits root !!
jeudi 3 novembre 2011 à 12:18:29 | Re : putenv() et getenv()

CptPingu

Administrateur CodeS-SourceS
Inutile de reposter 18 fois la même question... Sache que ta question est vue, même si elle n'est pas en début de liste.
Les membres y répondent quand ils peuvent (et si ils peuvent). J'ai répondu à ta question ici, avant de m'apercevoir que tu avais reposé la question à de nombreuse reprise. J'ai effacé ces doublons.
http://www.cppfrance.com/forum/sujet-VARIABLE-ENVIRONNEMENT_1552913.aspx

Merci à l'avenir de ne pas reposer plusieurs fois la même question et d'attendre patiemment que l'on te réponde !

________________________________________________________________________
Historique de mes créations, et quelques articles:
http://0217021.free.fr/portfolio
Merci d'utiliser Réponse acceptée si un post répond à votre question
jeudi 3 novembre 2011 à 12:23:24 | Re : putenv() et getenv()

andoid

Au faite c'est le même titre mais pas le contenu la premiere question j'ai pu le resoudre tout seul
jeudi 3 novembre 2011 à 12:30:09 | Re : putenv() et getenv()

andoid

pour buno:
le but est que si je tape lister="ls" puis entré le shell
t'affiche la valeur de $lister
/home/andoid/Bureau/projet: lister="ls
/home/andoid/Bureau/projet:$lister
resultat:
minish.c
minish.h
..
...
.....
nimportekoi.c

pour LA_Tupac:
le prof nous interdit d'utiliser system

mon code arrive a creer la variable lister mais mon shell revient pour attendre $lister il m'affiche rien
jeudi 3 novembre 2011 à 16:23:47 | Re : putenv() et getenv()

LA_Tupac

Membre Club

le prof nous interdit d'utiliser system


Je te l'ai dit, putenv ne modifie pas les variable directement (pour des questions de sécu bien sûr).
La question est donc: es-tu obligé d'utiliser les variables système? Si oui tu n'a pas d'autres alternatives...désolé
jeudi 3 novembre 2011 à 21:29:43 | Re : putenv() et getenv()

andoid

ok pour ne pas me faire degommer par le prof je pense que je vais utiliser un fichier
ce sera mieux

1 2

Cette discussion est classée dans : fonction, code, getenv, putenv


Répondre à ce message

Sujets en rapport avec ce message

getch() sous Linux [ par yapud ] Bonjour,J'ai un probleme avec la fonction gecth() se trouvant danc la librairie CURSES.H sous LINUX !J'utilise cette meme fonction sous WINDOWS qui ma Fonction return dans une console windows [ par Jolfulorc ] Bonjour,Lorsque j'affiche un texte dans une console windows (code du genre : coutla façon que j'ai trouvé pour contourner cet inconvénient Timers haute précision [ par SMarmotte ] Bonjour à tousJe cherche à attendre EXACTEMENT 60 micro secondes.J'ai fait cette routine mais elle me bouffe 50% du temps CPU du fait que je dois l'ap Problème de code en c++ (fonction itoa) [ par mimyne ] voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito Nombre aléatoire en C [ par FoLKeN91 ] Bonjour tout le monde.Alors voici mon probleme, j'ai beau cherché je n'arrive pas à le résoudre. Je désire faire une fonction qui renvoie un nombre al la fonction "afficher le source" de internet explorer [ par zip8000 ] Bonjour,je cherche a reproduire le resultat de la fonction "afficher la source" qui ouvre le code html d'une page internet. Mon but est de recuperer c convertir une chaine de caracatères en hexadécimal [ par vinc524 ] salut all !voilà je voulais savoir s'il existe une fonction pour convertir une chaine de caractètes provenat du port série RS232 récupéré par la métho Fonction find du STL [ par saturne_1606 ] Bonjour a tous!Voila mon prob:g un exo1.h comme suit:#include #include class personne{ protected : s pointer vers un tableau 2d [ par Adeon ] salut ! je suis en train de creer une fonction qui doit inclure un tableau 2d dont on ne connait pas les valeurs.si je fais :void fonction(char *tab){ Ajout Menu dans un PopupMenu [ par larion ] Bonjour, Dans mon programme je crée plusieurs menus dans un popupmenu avec ce code : Code: NewItems[p] = new TMenuItem(PopupMenu1); NewItems[p]->Capti


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales