Jesse Phillips wrote:
I don't know if I'm misunderstanding the use of shell() or if this is a
bug. Trying to run some programs with shell error with a could not close
file. Sadly it I can come to any reasonable conclusion as to why.
Example output from running writeln(shell("gcc"))
gcc: no input files
std.contracts.ErrnoException: std/stdio.d(336): Could not close file
`gcc' (Success)
Note that the program was executed correctly printing the error message,
and the appended (Success) massage...? Also shell("gcc -v") works as with
proper output and no error.
Similar errors trying to run shell("dmd") unsure if this is related to
the programs not being in /bin.
I think it's a bug in Phobos. Note that you get the exact same result
even if you remove the enclosing writeln(), which means that the
program's standard output stream hasn't been intercepted. Although I'm
unsure about the details, it seems that the std.stdio.File object that
should encapsulate the program's output stream isn't opened correctly,
and thus an exception is thrown when an attempt is made to close it.
Probably you don't get an error for "gcc -v" because the output of this
command is printed to standard error instead of standard output.
-Lars