Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications
Applications Questions sur l'utilisation d'applications, du shell, et des interfaces graphiques (KDE, Gnome, XFCE... )
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 18/05/2008, 21h53   #1
Membre régulier
 
Inscription : novembre 2006
Messages : 176
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 176
Points : 78
Points : 78
Par défaut Lancer un programme par la console ou en cliquant dessus ?

Bonjour à tous,

Je me demande quelles sont les différences entre lancer un programme dans la console (./nom_programme) ou le lancer en cliquant dessus dans l'explorateur.

A priori, je pensais que c'était pareil mais je rencontre un bug assez bizarre.

J'ai dans mon application une image à charger (l'image se trouve dans le même dossier que mon application).

Lorsque je lance par la console, pas de problème l'image se charge bien.

Lorsque je lance en cliquand dessus, rien ne s'affiche !

(Dans mon programme j'accède à mon image par le chemin d'accés "./nom_image" )

Merci pour vos réponses !
NeMo_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 09h32   #2
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Quand, depuis la console, tu lances ton application, tu t'es placé dans le répertoire qui contient l'image puisque tu fait ./mon_appli.

Quand tu lances l'appli depuis l'icône, il y a de fortes chances que le chemin courant soit ton home.

Si c'est toi qui a écrit ton appli, tu peux faire une modif rapide qui consiste à mettre le chemin complet de l'image que tu ouvres. Si ça marche, c'est que c'était bien cela le problème.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 09h58   #3
Membre régulier
 
Inscription : novembre 2006
Messages : 176
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 176
Points : 78
Points : 78
En effet, j'ai essayé de mettre le chemin d'accés complet et plus de problème l'image se charge bien. Merci !

Mais je suis un peu deçu au sens où je comptais profiter de l'avantage du " ./ " car si je distribue mon application, le chemin d'accès dépendra alors de l'emplacement que choisit l'utilisateur pour l'installer.

N'y a-t-il pas une solution pour pallier à cela ? (comme par exemple une commande système forçant le répertoire courant à celui de mon application et non home)

Merci.
NeMo_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 10h23   #4
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
Je vois plusieurs solutions :
- Tu analyses la chaine argv[0]. Elle te permet de récupérer la ligne de commande (tu peux faire un printf dans un premier temps pour te rendre compte des différentes façons dont ton programme sera appelé). Cette chaine peux t'aider à générer un nom de fichier avec son chemin complet ou pas...
- Tu met ton fichier image dans un endroit standard. Par exemple on trouve souvent dans /usr/share ou /usr/local/share des fichiers de ressource. Tu peux aller voir par toi même.
- Tu prévois une variable d'environnement.
- Tu prends en paramètre un chemin sur la ligne de commande.

Il existe peut-être aussi d'autres solutions.
Tu peux faire un mix de tout ça aussi.
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 10h50   #5
Membre éclairé
 
Inscription : octobre 2007
Messages : 812
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 812
Points : 317
Points : 317
ba tu recupere le pwd de l'app, et apres tout est relatif par rapport a ce path...
alavoler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 12h17   #6
Membre régulier
 
Inscription : novembre 2006
Messages : 176
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 176
Points : 78
Points : 78
Citation:
Envoyé par valefor Voir le message
Je vois plusieurs solutions :
- Tu analyses la chaine argv[0]. Elle te permet de récupérer la ligne de commande (tu peux faire un printf dans un premier temps pour te rendre compte des différentes façons dont ton programme sera appelé). Cette chaine peux t'aider à générer un nom de fichier avec son chemin complet ou pas...
- Tu met ton fichier image dans un endroit standard. Par exemple on trouve souvent dans /usr/share ou /usr/local/share des fichiers de ressource. Tu peux aller voir par toi même.
- Tu prévois une variable d'environnement.
- Tu prends en paramètre un chemin sur la ligne de commande.
Merci pour les solutions possibles mais parmis celles que tu cites j'en élimine 2 pour des raisons de facilité d'utilisation de l'application : l'image dans un endroit standard et le paramètre sur la ligne de commande.

Récupérer argv[0] marche nickel !

Pour la variable d'environnement, est-ce "aussi simple" qu'avec argv ou alors beaucoup plus technique ?

Citation:
Envoyé par alavoler Voir le message
ba tu recupere le pwd de l'app, et apres tout est relatif par rapport a ce path...
Oui, c'est ce que je vais faire avec argv[0] il me suffit de concaténer le chemin d'accés à mes images à ce path !

Merci à vous
NeMo_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2008, 17h58   #7
Rédacteur
 
Avatar de Davidbrcz
 
Homme
1A Supaéro
Inscription : juin 2006
Messages : 2 089
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 20

Informations professionnelles :
Activité : 1A Supaéro

Informations forums :
Inscription : juin 2006
Messages : 2 089
Points : 2 799
Points : 2 799
Envoyer un message via MSN à Davidbrcz
Citation:
Pour la variable d'environnement, est-ce "aussi simple" qu'avec argv ou alors beaucoup plus technique ?
Pour obtenir une variable d'environement c'est getenv.
man getenv pour plus d'info.
__________________
"Never use brute force in fighting an exponential." (Andrei Alexandrescu)

Mes articles dont Conseils divers sur le C++
Une très bonne doc sur la STL (en) Why linux is better (fr)
Davidbrcz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 08h41   #8
Membre chevronné
 
Avatar de valefor
 
Inscription : décembre 2006
Messages : 689
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 689
Points : 666
Points : 666
d'ailleur getenv te permet de recuperer le pwd :
Code :
char *pwd = getenv("PWD");
valefor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 23h43   #9
Membre régulier
 
Inscription : novembre 2006
Messages : 176
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 176
Points : 78
Points : 78
Citation:
char *pwd = getenv("PWD");
Cette commande marche nickel, elle me renvoie directement le path dont j'ai besoin. (/home/.../Programme)
Comme quoi j'avais un mauvais à priori sur la difficulté d'utilisation des variables d'environnement lol.

Merci à vous.
NeMo_O est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h33.


 
 
 
 
Partenaires

Hébergement Web