[C] Détails sur l'utilisation de execle

Résolu/Fermé
Lum - 24 mai 2009 à 11:30
 Lum - 24 mai 2009 à 17:03
Bonjour,

J'ai quelques problèmes avec l'utilisation de execle.
Je souhaite passer une chaîne de caractère en argument (environnement) de la fonction execle.
Jusqu'ici à priori tout est OK :

char texte[] = "Mon texte";

int main(){
 char *env[2] = {texte,NULL};
 execle("prog","prog",(char *)NULL,env);
}


Mais comment je fais pour récupérer "Mon texte" dans prog ?
J'ai vu que je devais utiliser la fonction getenv(char *) mais je ne sais pas quoi mettre en argument !

Quelqu'un à une idée ?

6 réponses

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
24 mai 2009 à 16:49
Salut,
Voici un petit exemple que je t'ai fait vite fait :
main.c
#include <stdio.h>
#include <unistd.h>

extern char **environ;

int main(void) {
    char texte[]="Mon texte";
    setenv("mLOGIN","Lum",0);
    execle("prog",NULL,environ);
    puts("problème d'exécution du fichier\n",stderr);

    return 0;
}

prog.c
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    char *p=getenv("mLOGIN");
    if(p)
        puts(p);
    else
        fputs("erreur d'environnement\n",stderr);

    return 0;
}

Bien sûr, prog.c doit être compilé et nommé en prog
De même pour main.c qui doit être compilé, et c'est lui l'exécutable.
Si t'as des questions, n'hésite pas.
1
Rassurez moi, il est possible de récupérer cette variable dans le programme ?
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 840
24 mai 2009 à 12:15
Salut,
Tu souhaites le récupérer en arguments ou en environnement car ce n'est pas la même chose ?
0
Fiddy mon sauver ;) tu m'as déjà éclairé dans mon précédent post : je sens que tu vas recommencer :D
Je souhaite récupérer en environnement, la variable qui contient "Mon texte".
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pour une fois google n'est pas mon amis... Le web pulule de copie du man execle, mais aucune explication sur comment récupérer cet environnement. Je désespère.
0
Fantastique, sa marche :D.
Mais j'avais pour but de faire passer le texte "Mon texte" comme variable d'environnement, pas Lum ^^. Pas bien grave ceci dit. J'ai juste changé ce que je voulais !
0