For reference, this has been fixed in R-devel, 74168. The problem only exists on Windows with RGui.

As a workaround for older versions of R, one can unset environment variables "GFORTRAN_STDOUT_UNIT" and "GFORTRAN_STDERR_UNIT" for the duration of system/system2 calls that invoke external Fortran programs.

Please note that while external code, which is run via system/system2, can be implemented in Fortran and use Fortran I/O to write to standard error and standard output, code that is linked against R is not allowed to do that. Mixing C and Fortran I/O is dangerous due to potentially incompatible runtimes. On Windows, with RGui, there is an additional problem that the output needs to go to the RGui console. So all output, at the lowest level, has to go through C functions Rprintf/REprintf. More details are in Writing R Extensions (Printing, Printing from FORTRAN).

Tomas

On 06/20/2017 12:52 PM, Jeroen Ooms wrote:
A user has reported an issue that appears when a fortran executable is
called via R on Windows. I am unsure if this expected behavior or a
bug in Fortran or in how R calls Windows executables.

The problem is that when the fortran program is called from R, stdout
gets written to a file "fort.6" instead of stdout. When the same
executable is called from the terminal it works fine and prints to
stdout. This unexpected behavior is unfortunate for R wrappers that
rely on captured output.

A minimal example is available from github [1] and can be installed with

    devtools::install_github("jeroen/ftest")
    ftest::hello()

When running ftest::hello() on linux, R will properly capture output.
However on Windows it will return an empty string, and a file 'fort.6'
gets created in the working directory instead.

The executables can be found in: system.file("bin", package = "ftest")

Interestingly if we open a command line terminal and run the same
executable it prints output to stdout. So perhaps it has to do with
the way R invokes CreateProcess() on Windows?

[1] https://github.com/jeroen/ftest

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to