According to ?system2, I should be able to direct the output of STDERR to a
file by giving the filename as a character vector to the "stderr" argument.

But here is what happens.

Given a ruby script test.rb (with its executable bit set):

#!/usr/bin/env ruby
STDOUT.puts "stdout"
STDERR.puts "stderr"

And the following R code:

> t <- tempfile()
> res <- system2("./test.rb", stdout=TRUE, stderr=t)
stderr
> res
[1] "stdout"
> file.exists(t)
[1] FALSE

I would expect the file t to exist and contain "stderr", and I would expect
not to see "stderr" in the console.

Also, there is a typo in the man page - the command is listed as "system" in
the Description instead of "system2".

The reverse behavior does work correctly:
> res <- system2("./test.rb", stdout=t, stderr="")
stderr
> file.exists(t)
[1] TRUE


Thanks!
Dan

        [[alternative HTML version deleted]]

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

Reply via email to