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

Linux Discussion :

Connaitre le chemin du répertoire contenant l'executable (C++)


Sujet :

Linux

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut Connaitre le chemin du répertoire contenant l'executable (C++)
    Bonjour,
    j'ai réalisé une application en C++ sous ubuntu, destiné à effectuer de la sauvegarde de données automatique et régulière.
    Mon application est présente dans la barre des taches de mon système.
    Jusqu'ici tout est bien, seulement je ne peu l'executer qu'en allant double cliquer dessus. Or,il faudrait qu'il se lance au demarrage de la machine.
    J'ai donc essayer de le rajouter, mais est alors généré des erreurs (impossible de trouver l'icone, il ne trouve pas ces fichiers ...) Bref la cata !
    Est-il possible de récupérer par un quelconque moyen le chemin absolu du répertoire contenant l'exécutable et donc ses dépendances ?

    Merci d'avance !

    Fabien Manac'h.

  2. #2
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut Précise
    J'ai donc essayer de le rajouter, mais est alors généré des erreurs
    Peux tu préciser comment tu as procédé pour "le rajouter" ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    oui bien sûr, simplement en allant dans Système -> préférences -> Sessions et à partir de la on peut rajouter un programme au démarrage de la machine.

    Lorsque je redémarre la machine, erreur wxWidget, ne trouve pas l'icone de l'application .

    Merci!

  4. #4
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    Tu devrais peut etre configurer ca manuellement:
    Mettre ton executables dans /etc/init.d
    Créer un lien dans /etc/rc5.d/ vers ton executable (il y a plusieurs repertoires rc.d je sais pas trop lequel choisir). Il faut donner comme nom S99Nom_du_programme pour qu'il soit lancé en dernier. Je suis pas trop sur de la manip, à vérifier.
    Il y a surement moyen d'aller plus vite (et d'etre sur de pas se tromper) en faisant man update-rc.d et en lisant un peu.
    Teste tout ca et dis moi ca m'interesse.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Merci KindPlayer pour tes réponses .
    En fait, mon logiciel devra ensuite être distribué sur plusieurs plateformes (Windows et Mac c'est résolu) et donc sera doté d'un installeur.
    Il faudrait donc que la procédure soit automatique.
    J'ai essayer en récupérant la variable d'environnement PWD, qui semble me donné le chemin complet (tester avec un lanceur sur le bureau vers mon application).
    Je ne sais pas si je peux mettre directement mon application dans init.d, parce que dans mon dossier j'ai l'application plus 3 dossiers contenants des fichiers nécessaires au fonctionnement de l'application ...

  6. #6
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    PWD est la variable donnant le dossier courant. En revanche tu peux modifier la variable PATH qui contient les chemins vers les repertoires des principaux programmes, en écrivant
    PATH=$PATH:/chemin/vers/ton/appli/. Tu peux peut etre essayer la manip que j'tai indiquée en mettant le lien vers le chemin absolu du repertoire de ton appli, je sais pas si ca marchera mais pourquoi pas..

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Sinon il y a la solution simple, forcer l'installation du logiciel dans usr/share/monappli.
    Jai vu qu'on pouvait y mettre des répertoires contenants les ressources.
    Avec l'installeur je force l'installation dans se répertoire et le tour est joué?

  8. #8
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    oui tu peux mais ca ne suffira pas pour que ton appli se lance au démarrage. Ce que tu peux faire c'est prendre comme modèle le fichier /etc/init.d/skeleton qui contient le squelette d'un script de démarrage/arret d'un démon. Tu changes la variable DAEMON en DAEMON=/usr/share/ton_appli/ et tu fais les autres ajustements necessaires. Tu enregistres ce fichier en /etc/init.d/mon_appli_daemon, et ensuite tu crées un lien vers ce fichier dans /etc/rc6.d avec comme nom S99mon_appli_daemon. Si tu veux pas que ton appli tourne en background comme un daemon fais ton propre script de lancement et copies le toujours dans /etc/init.d
    Si t'as pas tout compris n'hésite pas à me demander

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Merci !
    Je vais essayer tout de suite je te tiens au courant !

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bon, j'ai créé le fichier monappli_deamon dans /etc/init.d.
    J'ai fait un lien dans /etc/rc6.d vers le fichier monappli_deamon de /etc/init.d.
    Normalement cela devrait le lancer au démarrage de la machine ?

  11. #11
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    ca va lancer le script, apres tout dépend ce que tu as mis dans ton script.
    Si t'as mis quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/bin/bash
    /chemin/vers/mon/programme
    ca devrait marcher je pense.
    Apres tout dépend ce que fait ton programme, s'il a besoin de pouvoir etre arreté manuellement ou pas etc. Pour ces cas la je te renvoie au fichier /etc/init.d/skeleton pour faire un demon que tu pourras à loisir lancer avec nom_appli start ou arreter avec nom_appli stop ou encore mettre a jour la configuration etc.

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Il semble que l'application ne se lance pas au demarrage.
    Pourtant, si je tape dans la console /etc/init.d/monappli , l'application se lance bien.
    Peut être que mon lien n'est pas bon ...
    Peux tu me donner quelques explications sur les dossiers rc?

    J'ai fait un lien du type ln -s [ l'appli ] [ lelien ] !

    En tout cas merci beaucoup pour ton aide !

  13. #13
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    peut etre un problème de runlevel. tape runlevel dans ta console pour savoir ton niveau de runlevel. Par exemple si c'est 3 tu dois mettre ton lien dans rc0.d ou rc1.d ou rc2.d. Tu peux modifier le runlevel avec
    runlevel --set=un nombre entre 0 et 6
    mais c'est pas conseillé de changer le tunlevel il parait. Donc mets ton lien dans un repertoire rc compatible avec le runlevel en veillant bien à le nommer comme je t'avais indiqué dans les messages précédents.
    Jsuis pa tres sur de tout ce que je raconte je t'avoue que je découvre en même temps que toi

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Oui je me suis renseigner sur les rc0 ... rc6, cela dépent du runlevel oui.
    Alors j'ai supprimer mon lien, et taper la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    update-rc monappli defaults 99
    Cette commande rajoute un lien dans chaque répertoire rc de /etc/ (réglant ainsi je pense le problème du runlevel )
    Malheureusement, mon programme ne s'exécute toujours pas au démarrage.
    Pourtant si tape ./K99monappli dans /etc/rc6.d (par exemple) le programme démarre ...
    Bizarre !

  15. #15
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    je crois que j'ai dit une connerie. Puisque le runlevel va de 0 a 6, un runlevel de 3 doit concerner les dossiers de rc0.d jusqu'a rc3.d et non rc2.d comme j'avais dit précédement

  16. #16
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    J'avoue que je sais plu trop la j'ai atteint mes limites Jette un oeil sur les logs, genre /var/log/syslog y aura peut etre une info utile.

  17. #17
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    Et c'est quoi ton script de démarrage au fait?

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    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
     
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          skeleton
    # Required-Start:    $local_fs $remote_fs
    # Required-Stop:     $local_fs $remote_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      S 0 1 6
    # Short-Description: Example initscript
    # Description:       This file should be used to construct scripts to be
    #                    placed in /etc/init.d.
    ### END INIT INFO
     
    # Author: Fabien Manac'h <>
    #
     
     
    /usr/share/dossierAppli/monappli
    J'ai trouvé un lien sympa sur l'explication des différents runlevel sous linux
    http://www.gcolpart.com/howto/runlevel.php4

    Je pense que mon script ne doit pas être complet !

    Merci de ton aide !

  19. #19
    Membre confirmé Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Points : 477
    Points
    477
    Par défaut
    J'ai regardé un peu le lien que tu as donné, et je pense comprendre un peu mieux. Alors deja ton lien doit etre de la forme S99nom_appli (S comme start, K c'est pour Kill, donc arreter). Ensuite pour ton script de démarrage reprends le squelette de /etc/init.d/skeleton (qui porte bien son nom ) et modifie ce qui doit etre modfié, en particulier le chemin vers l'appli. D'ailleurs si tu regardes un peu les fichiers de init.d tu verras qu'il suivent tous ce squelette, plus ou moins simplifié selon les besoins.

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 27
    Points : 27
    Points
    27
    Par défaut
    Bonjour ,
    J'ai repris mon script de démarrage à 0, j'ai repris skeleton de/etc/init.d et récréé mes liens.
    Je pense que j'ai trouver d'ou vient le problème. Il semblerait que sa soit un problème de droit, le logiciel ne peut etre lancé qu'en root... Si j'essai de lancer manuellement le programme grâce au lien de /etc/rc2.d, je ne peut le faire qu'en étant super-utilisateur.
    Pourtant lorsque je regarde les droits du liens, et celui du script, tout le monde à au moins le droit à l'exécution!
    Je pense qu'on approche !

Discussions similaires

  1. Connaitre le chemin de l'executable
    Par uriotcea dans le forum Débuter
    Réponses: 21
    Dernier message: 07/11/2012, 08h30
  2. Inscrire le chemin du répertoire contenant la feuille excel avec sa macro
    Par Vincent32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/01/2012, 16h38
  3. Connaitre le chemin de l'executable
    Par geof dans le forum Windows Forms
    Réponses: 2
    Dernier message: 13/05/2008, 12h11
  4. [DEBUTANT] Modifier le chemin du répertoire data
    Par tripper.dim dans le forum Installation
    Réponses: 1
    Dernier message: 12/01/2006, 19h12
  5. nom de répertoire contenant des accents
    Par isa38 dans le forum Windows
    Réponses: 6
    Dernier message: 21/07/2005, 10h27

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