Zur Zeit verwende ich Shell-Befehlszeilenaufrufe von meinem Fortran-Programm, das eine systeminterne SYSTEM-Intrinsic-Routine verwendet (ähnlich Fortran 2008 EXECUTE_COMMAND_LINE intrinsic):
%Vor%Dabei steht commandStr für eine Zeichenfolge, die den Shellbefehl enthält, den ich ausführen möchte. Im Moment ist mir keine direkte Möglichkeit bekannt, die Ausgabe von commandStr zurückzugeben, sondern nur den Rückgabestatus. Also, was ich jetzt mache, schreibt die Ausgabe in eine Datei und liest dann die Datei aus dem Fortran-Programm. Beispiel:
%Vor%wenn ich Kommas aus myFile entfernen möchte. Ich verwende dann OPEN und READ, um den Inhalt von dummyFile zu erhalten.
Das funktioniert gut, aber ich mache mir Sorgen über das Schreiben / Lesen von Dateien von der Festplatte, besonders wenn ich dies innerhalb einer langen Schleife mache und wenn die Ausgabe von commandStr groß ist. Gibt es eine Möglichkeit, die Ausgabe von commandStr in einen Speicherpuffer (nicht Festplatte) umzuleiten, auf den ich direkt von meinem Fortran-Programm aus zugreifen könnte (vielleicht über eine bestimmte UNIT-Nummer)?
Wenn dies in einer POSIX-Umgebung ist, ist möglicherweise auch die Bibliotheksfunktion popen()
verfügbar.
Sehen Sie sich die Dokumentation für Ihre Fortran-Umgebung an, da ich mir der Semantik für die Verbindung der I / O mit Fortran nicht sicher bin. Wenn es wie die C-Laufzeitbibliothek ist, benötigt die Dateiverbindung auch eine spezielle Funktion, um sie zu schließen, pclose()
.