On Tue, 07 Jul 2009 12:04:43 +0200, Lars T. Kyllingstad wrote: > 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
Thanks, I try and narrow down when this happens. I first assumed it was because running GCC without anything outputs to stderr and not stdout, but that wouldn't explain the DMD issue. ("ggc -v" goes to stdout)