windows - Problemer med at skrive til et rør mellem Fortran og C programmer

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har et program skrevet i Fortran af en anden, der følgelig læser et par ting fra standardindgangen, og så foretager nogle beregninger og output resultater. Hvad jeg vil gøre er at køre det mange gange med forskellige input data fra et andet program, skrevet i C af mig. For at gøre dette bruger jeg popen:


  FILE *pipe = popen(".\program.exe", "wt");
  if (!pipe) {
    exit(1);
  }

  fprintf(pipe, "\%d
", thing1);
  fprintf(pipe, "\%d
", thing2);
  ...

  pclose(pipe);


Problemet er, at det ikke virker på den måde. Det virker perfekt med 'program.exe < input.txt 'men ikke på denne måde. Den læser den første ting og udsender derefter denne dumme fejl:' IO-09 systemfilfejl - ukendt fejl '. Selvfølgelig har jeg ingen idé om, hvad det betyder, da jeg aldrig har programmeret Fortran.


Hvad gør jeg forkert?


EDIT:


Desværre har jeg ingen kildekode for det pågældende program

Bedste reference


Det ser ud til at det skal fungere, ikke sikkert, hvorfor det ikke gør det. Er du sikker
popen() er tilgængelig på din Windows-maskine? Jeg husker det vagt
Ikke tilgængelig for nogle Windows-systemer. Du kan prøve det med en
simpelt C-program og se om det er s popen() eller Fortran-programmet.


Som en løsning kan du skrive dine data til en midlertidig fil
brug system(".\program.exe < tempfile") for at ringe til Fortran programmet.
Ja, det er en kludge.

Andre referencer 1


Du fortæller ikke Fortran compiler du bruger, men for nylig blev en langvarig bug i gfortran løst, hvor læsning fra et rør mislykkedes. Se


http://gcc.gnu.org/bugzilla/show\_bug.cgi?id=47694[6]


Så hvis du bruger gfortran, kan du prøve at opdatere til en version, der har fejlrettelsen.