2010-09-07 4 views
2

J'ai une sortie de programme FORTRAN que je veux rediriger vers un fichier. Je l'ai déjà fait et j'utiliseLa redirection stderr et stdout Bash échoue

$myprog.out>>out.txt 2>&1 

et pour une raison quelconque cela ne fonctionne pas. Je teste avec un autre programme de test simple

$myprog.test>>out.txt 2>&1 

et il fonctionne

je lance myprog.out et la sortie passe à l'écran comme d'habitude, mais redirigeant semble échouer! Cela fonctionnait et semble maintenant avoir cessé de fonctionner. C'est très étrange. J'ai commenté quelques instructions d'impression que je ne voulais plus, recompilées, puis la redirection de groupe ne fonctionne pas.

Il ya clairement quelque chose de différent dans ma sortie mais comment diagnostiquer où ça va?

+0

Vous aurez probablement besoin d'afficher du code de votre programme, y compris des lignes commentées. Est-ce qu'il écrit directement au tty au lieu de stdout? –

+0

Merci Dennis et l'exemple d'une ligne de sortie est – Tommy

+0

imprimer *, '||||||| runtime = ', runtime,' |||||||||| – Tommy

Répondre

3

Vous avez probablement besoin de vider votre sortie. Voir par exemple this SO topic. Comment faire cela dépend de votre compilateur, je suppose. Car seule la norme Fortran 2003 inclut l'instruction flush() et la possibilité de déterminer des nombres correspondant aux unités stdout/stderr. Cependant, dans gfortran (par exemple), vous pouvez utiliser la procédure intrinsèque flush() avec les équivalents de descripteurs de fichiers Unix: UNIT = 5 pour stdin, UNIT = 6 pour stdout et UNIT = 0 pour stderr.

PROGRAM main 

    PRINT *, "Hello!" 
    CALL flush(6) 
    CALL flush(0) 

END PROGRAM main 
+0

Merci. Je vais essayer et rendre compte. Je viens d'expérimenter en jouant avec les unités 0,5 et 6 – Tommy

+0

Merci de m'être levé et ça a marché. Merci beaucoup Kemiisto – Tommy

+0

@Tommy: "Lorsque vous avez décidé quelle réponse vous est la plus utile, marquez-la comme la réponse acceptée en cliquant sur le cadre de la case à cocher à gauche de la réponse." De SO FAQ (http://stackoverflow.com/faq) – Wildcat

0

Avec >> vous ajoutez la sortie de votre programme à out.txt chaque fois que vous l'exécutez.

Pouvez-vous essayer de faire défiler jusqu'à la fin de out.txt et voir si votre sortie est là?

+0

Merci, oui je sais que >> ajoute, le même résultat (ou l'échec d'un résultat) arrive avec> mais j'utilise simplement >> parce que c'est la ligne dans un script qui échoue donc j'essaye juste de obtenir cette ligne pour travailler. Je commence avec un fichier vide out.txt donc ce n'est pas un problème. – Tommy

+0

Merci Dennis et l'exemple d'une ligne de sortie est – Tommy

+0

imprimer *, '||||||| runtime = ', runtime,' |||||||||| ' – Tommy

Questions connexes