On Tue, 11 Dec 2007, Bjarni Juliusson wrote:
I'm developing R integration for a project called Bioclipse at
Uppsala
University. The current implementation works by simply forking
an R and
sending it text (with some substitutions on it) down a pipe,
getting the
printed output back up another pipe. This of course works fine,
except
it runs into one problem: R finds a pipe on its stdin and
decides to be
"non-interactive", which means that as soon as the user makes a
typo and
causes an error, R exits.
Actually, not so. The default error handler for non-interactive
use is
to do that, but you can change it.
Could you perhaps just point me in the right direction here? I really
have no idea how to do this.
Specify a non-NULL error handler by doing something like this:
options(error=dump.frames)
See ?options (look for "error") and ?stop for more details.
-- Tony Plate
Also, what exactly does non-interactive mode imply, besides this
default
error handling behaviour?
I checked the source, and it's a couple of isatty()'s in the two
files
named system.c that are doing it. They are of course intended to
be a
feature, but in this case it causes us trouble. Would it be
possible to
get a command line switch to control this behaviour? I'm not
sure pseudo
terminals can be used portably, or can they?
They can, and are e.g. by ESS (except on Windows, where there is
already
a switch). I think you need to look a bit more carefully at what
other
projects do.
It needs to be portable to Windows. I'll look into this
possibility next.
Didn't mean to ask before I had done my homework. Thanks for your
help!
Bjarni