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

Fortran Discussion :

Application exécutable n'importe où dans l'arborescence - debutant


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut Application exécutable n'importe où dans l'arborescence - debutant
    Bonjour,

    bien qu'ayant parcouru la quasi totalité des pages du forum (et ça en fait), je n'ai pas trouvé de réponse à ma question (pour une fois). J'espère que vous pourrez m'éclairer!

    Je travail actuellement sur une petite application fortran (f90) permettant de gérer l'éxécution d'autres programmes ainsi que leurs fichiers d'entrée et de sortie. Je dois pour cela déplacer plusieurs fichiers. Pour le moment je parviens à le faire connaissant le chemin du répertoire courant, cependant cette application à vocation à être utiliser par d'autres personnes, sur d'autres machines. J'aimerais donc coder quelque chose de plus générique. J'ai tenté de récupérer le chemin du répertoire courant à l'aide de "getcwd" et de le placer dans une variable. Mais je ne parviens pas a définir cette variable comme chemin dans les appels système qui me permettent de gérer mes fichiers ( call system ('mv f.dat ....../workingdirectory') ). Je ne peux remplacer le chemin par la variable charactère (j'ai pris soin en passant d'enlever les blancs).

    Comme vous l'avez certainement remarqué, je travail sous linux et j'utilise le compilateur gfortran.

    Merci d'avance!

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    tu ne peux pas utiliser des chemins relatif?

    sinon tu peux te faire un 'laucher' qui va écrire des variables d'environnement (export avec bash, setenv avec csh) et toi tu utilise ces variables

    sinon un fichier temporaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    character(len=255) cwd
     
    call system("pwd>tmp")
    open(unit=11,file="tmp",status="unknown")
    read(11,'(a)')cwd
    close(11)
    call system("rm -f tmp")

  3. #3
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Salut

    Merci pour ta réponse genteur slayer. J'ai fait un break dans ce projet et je viens juste de m'y remettre.

    L'idée des chemins relatifs est très séduisante, et fonctionne dans la majorité des cas, cependant, je suis assez limité quant aux répertoires de travail. Un logiciel que j'appel travail uniquement dans un sous répertoire du working directory (là où les autres logiciels travaillent), et je ne peux malheuresement pas changer cela.

    En somme, j'aimerais copier un fichier et le coller dans le répertoire qui se trouve un peu plus haut dans l'arborescence, et ce sans connaitre au préalable le chemin absolu du working directory... Dans le shell on peut utiliser la commande "cd .." pour remonter dans l'arborescence, mais apparemment on ne peux pas appeler cette commande via "call system" (il ne se passe rien, mais pas d'erreur non plus).

    Je suis ouvert à toute idées, des plus simples au plus lourdes, mais uniquement du code fortran...

    merci!

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    sous unix-like, (et même ms-dos et windows il me semble) dans chaque répertoire, il y a toujours au moins deux autres répertoire:
    ces deux répertoires sont des répertoires particulier:
    - . est le répertoire courant (et oui c'est un chemin relatif)
    du coup pour lancer une appli du répertoire: "./exec" <=> "dans le repertoire courrant, lance exec"
    - .. est le répetoire parent (d'où le "cd .." <=> "change directory to parent directory")

    un exemple concret:
    j'ai une arborescence comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    /
       home
          toto
             rep1
             rep2
                sousrep1
                sousrep2
             rep3
                           sousrep1
    on suppose que l'exécutable est "/home/toto/rep3/sousrep1/exec"
    on se place donc dans ce repertoire, si je veux aller cherche ce qu'il y a dans sousrep2, soit je donne le chemin complet = /home/toto/rep2/sousrep2/
    soit en relatif: "../../rep2/sousrep2" <=> "repertoire parent du parent (ie: /home/toto) puis on descend dans l'aborescence..."

    grâce à cela on peut parfaitement naviguer dans l'ensemble de l'arborescence tout en utilisant des chemins relatifs... comme ces chemin sont construit par ton application, ils peuvent être super complexe et inutilisable par un humain mais fonctiuonne quand même exemple:

    ../../rep2/../../toto/rep1/.././rep3/sousrep1/../ <=> /home/toto/rep3/

  5. #5
    Membre émérite

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 662
    Par défaut
    Je viens d'essayer cette astuce, et ça marche très bien! Merci d'avoir répondu aussi rapidement! Problème résolu.


    Ps : Je ne sais pas comment on ajoute la mention "résolu" au sujet.

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

Discussions similaires

  1. [Batch] Script pour exécuter un autre script dans une arborescence de repertoires.
    Par jano_dave dans le forum Scripts/Batch
    Réponses: 16
    Dernier message: 02/07/2009, 14h43
  2. Réponses: 4
    Dernier message: 14/03/2009, 02h45
  3. [Débutant] Exécuter un document Office dans une application WPF
    Par Bagoo dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 14/01/2009, 17h22
  4. Placer un boutton n'importe où dans l'application
    Par gannher dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/01/2008, 16h17
  5. Importer un dump dans une arborescence différente
    Par Rockman018 dans le forum Import/Export
    Réponses: 4
    Dernier message: 19/04/2007, 11h02

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