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

Résolu
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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    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 ?
      1. Contributeur
        Salut,
        Tu souhaites le récupérer en arguments ou en environnement car ce n'est pas la même chose ?
        1. 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".
          1. 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.
            1. 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 !