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 :

G95 - Redirection vers stdout original


Sujet :

Fortran

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut G95 - Redirection vers stdout original
    Bonjour,

    je travaille sur un code Fortran sous G95.

    J'ai eu besoin de rediriger stdout vers un fichier. Pour ça, pas trop de soucis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    open(unit=6, file="monFichierdeSortie")
    ce qui m'a permis de ne pas avoir à réécrire tous les print * en write(unitNumber).

    Le souci est que je voudrais pouvoir rebasculer vers le stdout standard.
    J'ai essayé les codes suivants :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    open(unit=6, file="stdout")
    open(unit=6, file="/dev/stdout")
    mais aucun ne fonctionne.

    Quelqu'un aurait une idée (voire même avec des appels systèmes, peu importe) ?

    Merci !!

    Seb.

  2. #2
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    Bonjour

    Normalement, il n'y a rien à faire puisque sous g95 l'unité 6 correspond à la sortie standard i.e écran.

    Si je fais par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      print *, 'Ca marche '
      end
    cà écrit Ca marche à l'écran.

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      open (6,file='sortie')
      print *, 'Ca marche '
      close (6)
      end

    cà écrit Ca marche dans le fichier sortie.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci pour votre réponse, mais...

    Pour envoyer l'unité 6 dans un fichier, pas de soucis.

    Ce dont j'ai besoin, c'est pouvoir, après avoir fait cette redirection,"réassigner" l'unité 6 à stdout (soit la sortie écran standard).

    C'est-à-dire "annuler" la redirection précédente...

  4. #4
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    C'est-à-dire "annuler" la redirection précédente...
    Si je comprend bien, les 2 dans le même programme ?

    Je ne sais pas faire.

    Mais si le but est juste de récupérer les sorties écrans, le plus simple est, sans toucher au code source, une capture de la sortie en plus de l'affichage :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nom_executable  | tee  monFichierdeSortie
    t'affiche les résultats à l'écran ET dans le fichier monFichierdeSortie

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Personnellement, je tenterais de fermer le unit 6 en espérant que l'accès write subséquant force la réouverture / assignation par défaut sur stdout...

  6. #6
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut Open unit 6,redirect stdout
    bonjour
    pourquoi utilise -tu pour l'ecran alors qu'on peut simplement utiliser write qui se prete à la redirection car il dispose du parametre de redirection :
    si tu remplace avec Cherche-Remplace tous tes " print *, " avec
    " write(6,*) " tu seras sauve.
    voici un exemple de redirection de write:
    code:
    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
     
     
           PROGRAM STDOUT
     
           INTEGER*4:: ENTIER1,ENTIER2
    	 REAL*4    :: REEL1,REEL2    
           CHARACTER(40)::CHAINE  
     
           ENTIER1=100
    	 ENTIER2=1500 
           REEL1=205.5
    	 REEL2=23.59
     
    	 CHAINE="CA MARCHE AVEC CLOSE"
     
     
    !  PRINT TO THE SCREEN (PRECONNECTED UNIT 6).
          WRITE(6, '("This is unit 6 Ecran")')
     
    !  USE THE OPEN STATEMENT TO CONNECT UNIT 6
    !  TO AN EXTERNAL FILE NAMED 'TEST.TXT'.
          OPEN (UNIT = 6, FILE = 'TEST.TXT', STATUS = 'OLD')
     
    ! PRINT TO THE FILE 'TEST.TXT'.
          WRITE (6,*) ENTIER1,ENTIER2,REEL1,REEL2  
          WRITE (6,*) CHAINE
     
    !  CLOSE IT.
          CLOSE (6)
    !  RECONNECT UNIT 6 TO THE SCREEN, BY WRITING TO IT.
          WRITE(6,' (" REOPEN SCREEN FOR  TEST.TXT")')
     
    	WRITE (6, *) ENTIER1,ENTIER2,REEL1,REEL2  ,CHAINE
     
    	END PROGRAM STDOUT
    ca marche avec close comme l'as si bien dit ca marche à l'ecran.
    bon code....

  7. #7
    Expert confirmé
    Inscrit en
    Avril 2008
    Messages
    2 564
    Détails du profil
    Informations personnelles :
    Âge : 64

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 564
    Points : 4 441
    Points
    4 441
    Par défaut Open unit 6,redirect stdout
    bonjour
    pourquoi utilise -tu pour l'ecran alors qu'on peut simplement utiliser write qui se prete à la redirection car il dispose du parametre de redirection :
    si tu remplace avec Cherche-Remplace tous tes " print *, " avec
    " write(6,*) " tu seras sauve.
    voici un exemple de redirection de write:
    code:
    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
     
     
           PROGRAM STDOUT
     
           INTEGER*4:: ENTIER1,ENTIER2
    	 REAL*4    :: REEL1,REEL2    
           CHARACTER(40)::CHAINE  
     
           ENTIER1=100
    	 ENTIER2=1500 
           REEL1=205.5
    	 REEL2=23.59
     
    	 CHAINE="CA MARCHE AVEC CLOSE"
     
     
    !  PRINT TO THE SCREEN (PRECONNECTED UNIT 6).
          WRITE(6, '("This is unit 6 Ecran")')
     
    !  USE THE OPEN STATEMENT TO CONNECT UNIT 6
    !  TO AN EXTERNAL FILE NAMED 'TEST.TXT'.
          OPEN (UNIT = 6, FILE = 'TEST.TXT', STATUS = 'OLD')
     
    ! PRINT TO THE FILE 'TEST.TXT'.
          WRITE (6,*) ENTIER1,ENTIER2,REEL1,REEL2  
          WRITE (6,*) CHAINE
     
    !  CLOSE IT.
          CLOSE (6)
    !  RECONNECT UNIT 6 TO THE SCREEN, BY WRITING TO IT.
          WRITE(6,' (" REOPEN SCREEN FOR  TEST.TXT")')
     
    	WRITE (6, *) ENTIER1,ENTIER2,REEL1,REEL2  ,CHAINE
     
    	END PROGRAM STDOUT
    ca marche avec close comme l'as si bien dit grame ca marche à l'ecran.
    bon code....

  8. #8
    Membre habitué Avatar de Grame
    Profil pro
    Inscrit en
    Août 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Août 2007
    Messages : 148
    Points : 192
    Points
    192
    Par défaut
    Citation Envoyé par Sylvain Bergeron Voir le message
    Personnellement, je tenterais de fermer le unit 6 en espérant que l'accès write subséquant force la réouverture / assignation par défaut sur stdout...
    C'est aussi ce que j'ai essayé, mais ca ne marche pas

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346

Discussions similaires

  1. Redirection de stdout en C vers Python
    Par makia42 dans le forum PyQt
    Réponses: 11
    Dernier message: 05/04/2011, 21h03
  2. Redirection a la fois vers stdout et vers un pipe
    Par yobbas dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 09/07/2010, 19h39
  3. [STRUTS] Redirection vers un contrôleur
    Par noah42 dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/02/2005, 09h23
  4. [PRO] redirection vers une page
    Par Mister_FX dans le forum ASP
    Réponses: 10
    Dernier message: 23/06/2004, 17h31
  5. Pb de redirection vers page principale
    Par croco83 dans le forum ASP
    Réponses: 2
    Dernier message: 06/05/2004, 14h10

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