archi12
Bonjour,
j'ai besoin de passer des parametres d'un prog1 à un prog2.
dans prog1:
int ret;
ret = setenv("consigne", "16", 1);
printf( "setenv 'consigne' %d\n", ret); // ret = 0
// puis relecture pour confirmation
char * value;
value = getenv("consigne");
printf( "getenv 'consigne' : %s\n", value);
jusque là tout marche bien, value est bien 16
------------------------------
maintenant dans prog2:
char * value;
value = getenv("consigne");
printf( "getenv 'consigne' : %s\n", value);
et là catastrophe, value n'est pas renseigné.
-------------------------------
j'ai aussi essayé un 'export consigne=16' mais idem, rien dans prog2.
pour le moment je passe les parametres via un fichier, il y a peu etre plus simple !
------------------------------
A l'aide ! merci.
Chacual
As-tu vraiment besoin de variables d'environnement ?
Si tu souhaites passer des paramètres de ton prog1 vers ton prog2, tu peux les passer au lancement de prog2 et les récupérer avec les paramètres argc et argv dans le main de ton prog2.
eponyme
Salut,
ce forum n'est pas un forum d'aide à la programmation...
Cependant ta question peut soulever un point intéressant :
Les variables d'environnement que tu définis de cette façon ne sont valable que pour le processus en cours, et les fils si tu fais un export.
Si tu lances tes deux programmes dans deux consoles différentes, il est donc normal que cela ne fonctionne pas. Tu peux d'ailleurs faire le test directement en bash.
Dans tout les cas ce n'est pas la meilleure façon de faire pour faire dialoguer deux programmes ensembles (ni par fichier). Le mieux est soit d'utiliser un pipe, soit d'utiliser des socket de type UNIX (la communcation se fait alors par un pseudo fichier placé sur le disque). Cela te permet d'envoyer des paramètres, mais aussi d'avoir un vrai dialogue pour t'assurer que les infos sont bien reçues, etc ...).
epo
archi12
bonjour,
et merci à vous deux pour votre réponse rapide.
je vais 'naturellement' utiliser les sockets.
merci encore