Schreiben an fifo (Named Pipe)

8

Ich versuche eine Fortran-Anwendung zu bekommen, um einen Fifo zu öffnen und formatierte Daten darauf zu schreiben. Ich habe das auf ein minimales Beispiel reduziert. Lassen Sie foo.f90 das folgende Programm sein:

%Vor%

Kompilieren und führen Sie das Programm jetzt aus:

%Vor%

Das Programm funktioniert also gut genug, wenn Sie in eine normale Datei schreiben. Beim Schreiben in den FIFO wird jedoch versucht, die Dateigröße nach dem ersten Schreibvorgang zu ändern und die Anwendung zu beenden, nachdem dies fehlgeschlagen ist.

Ich bin ziemlich neu in Fortran, also bin ich mir nicht sicher, ob das ein Fehler in gfortran ist, oder ob es eine Möglichkeit gibt, die Datei zu öffnen, die diesen ftruncate syscall unterdrückt. Ich würde lieber bei dem formatierten sequentiellen Ansatz bleiben: Meine Zeilen haben unterschiedliche Längen, und ich würde es eher vermeiden, eine Datensatznummer mit jedem write angeben zu müssen.

    
MvG 02.08.2012, 15:11
quelle

1 Antwort

4

Dies ist ein altes Feature (wage es nicht einmal zu denken, dass es ein Bug ist! ) in libgfortran , das vor einigen Jahren gepatched wurde, aber für den GCC 4.7 Zweig wieder eingeführt wurde, genauer gesagt in SVN Revision 180701 . Offenbar testen gfortran -Entwickler ihren E / A-Code nicht mit Named Pipes.

Sie sollten eine ältere gfortran Version (arbeitet mit 4.6.1) oder einen anderen Fortran Compiler von einem anderen Hersteller verwenden. Ich werde einen Fehlerbericht an GCC senden.

    
Hristo Iliev 02.08.2012, 16:42
quelle