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

Résolu
Lum -  
 Lum -
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 ?
Configuration: Linux
Firefox 3.0.10

6 réponses

  1. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    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
  2. Lum
     
    Rassurez moi, il est possible de récupérer cette variable dans le programme ?
    0
  3. fiddy Messages postés 441 Date d'inscription   Statut Contributeur Dernière intervention   1 847
     
    Salut,
    Tu souhaites le récupérer en arguments ou en environnement car ce n'est pas la même chose ?
    0
  4. Lum
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Lum
     
    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
  7. Lum
     
    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