IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

chemin jusqu'à l'exécutable


Sujet :

GTK+ avec C & C++

  1. #1
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut chemin jusqu'à l'exécutable
    Bonjour

    Je me demande si je peux trouver le chemin d'accès vers l'exécutable.
    C'est à dire que je peux lancé le programme sous la forme : chemin/exécucatable sans être dans le bon répertoire. Mes images étant dans le même répertoire que l'exécutable, j'ai besoin de savoir où il est.
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par troumad
    Bonjour

    Je me demande si je peux trouver le chemin d'accès vers l'exécutable.
    C'est à dire que je peux lancé le programme sous la forme : chemin/exécucatable sans être dans le bon répertoire. Mes images étant dans le même répertoire que l'exécutable, j'ai besoin de savoir où il est.
    Je ne vois pas très bien le but de la manoeuvre (si tu lances l'exécutable il trouvera d'office les images s'il se situe dans le même répertoire) mais normalement les fonctions qui permettent de retrouve le chemin exacte de l'exécutable sont des fonctions propres à l'implémentation me semble t-il !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    avec getcwd et y ajouter le chemin pris pour l'exécution du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     for(i=0;argv[0][i];i++)
      if (argv[0][i]=='/') j=i;
     
     if (j>=0)
     {
      argv[0][j]=0;
      strncpy(chemin,argv[0],99);
    printf("Chemin=%s et exécutable=%s\n",chemin,argv[0]+j+1);
     }
     else
     {
      chemin[0]=0;
     }
    Je devrais y arriver !
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     for(i=0;argv[0][i];i++)                                            /* le paramètre 0 est la commande : elle contient une partie ou */
      if (argv[0][i]=='/') j=i;                                         /* le chemin                                                    */
     
     if (argv[0][0]!='/')                                                  /* pas toucher à i et j dans ce if                              */
     {
      do                                                                /* récupérer le répertoire courant                              */
      {
       if ((chemin=(char *)malloc(k)))
       {
        drap=getcwd(chemin,k-1);
        if (drap==0 && errno==ERANGE)                                   /* la longueur disponible est inférieure à la longueur du PATH  */
        {
         k+=100;                                                        /* on allonge de 100 la longueur disponible                     */
         free(chemin);
        }
        else
        {
         if (drap==0)                                                   /* si la récupération du chemin plante on annule                */
         {
          free(chemin);
          chemin=NULL;
         }
         drap=1;
        }
       }
       else drap=1;
      }
      while (drap==0);
      if (chemin==NULL)
       return 0;
      drap=strlen(chemin)+1;
      chemin[drap-1]='/';
      chemin[drap]=0;
      chemin=realloc(chemin,drap+i+1);
     }
     else
     {
      drap=0;
      chemin=malloc(i+1);
     }
     
     if (j>=0)
     {
      argv[0][j]=0;
      strcpy(chemin+drap,argv[0]);
    printf("Chemin=%s et exécutable=%s\n",chemin,argv[0]+j+1);
     }
     else
     {
    printf("Chemin=%s et exécutable=%s\n",chemin,argv[0]); 
     }
    Me semble correct ! Et j'en suis fier
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Membre confirmé Avatar de Lunixinclar
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    416
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 416
    Points : 489
    Points
    489
    Par défaut
    Salut glib.h est inclus par gtk.h!
    http://developer.gnome.org/doc/API/g...functions.html

  6. #6
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 597
    Points : 7 832
    Points
    7 832
    Par défaut


    Voici qui m'enlève une épine du pied : je reste compatible Linux et Windows
    Maintenant, dans le même style, il me reste à trouver comment changer de répertoire !

    chdir devrait aller
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CONFORMITÉ
           SVr4, BSD 4.4, POSIX.1-2001.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     ori=g_get_current_dir();
     chemin=g_dirname(argv[0]);
     if (!g_path_is_absolute (argv[0]))
     {
      tmp=(char *)malloc(strlen(ori)+strlen(chemin));
      strcpy(tmp,ori);
      tmp[strlen(ori)]=G_DIR_SEPARATOR;
      tmp[strlen(ori)+1]=0;
      strcat(tmp,chemin);
      free(chemin);
      chemin=tmp;
     }
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre le chemin de l'exécutable
    Par altaruk dans le forum Débuter
    Réponses: 5
    Dernier message: 03/02/2008, 17h44
  2. Comment récuperer le chemin d'un exécutable ?
    Par bigey3 dans le forum Langage
    Réponses: 13
    Dernier message: 01/01/2008, 18h14
  3. [vbscript] chemin vers un exécutable + options
    Par alexaadre dans le forum VBScript
    Réponses: 5
    Dernier message: 08/06/2007, 15h35
  4. [WinDev 9] Chemin de l'exécutable auto-extractible
    Par olivier de rouen dans le forum WinDev
    Réponses: 2
    Dernier message: 07/06/2007, 10h36
  5. [C#][.NET2]Chemin vers l'exécutable d'un service
    Par ben_popcorn dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/04/2007, 02h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo