[Rd] Ctrl-C with R.exe and Rterm.exe in R v1.9.0

Henrik Bengtsson hb at maths.lth.se
Thu May 6 17:35:39 CEST 2004


> -----Original Message-----
> From: r-devel-bounces at stat.math.ethz.ch 
> [mailto:r-devel-bounces at stat.math.ethz.ch] On Behalf Of Duncan
Murdoch
> Sent: den 6 maj 2004 16:16
> To: Henrik Bengtsson
> Cc: r-devel at stat.math.ethz.ch
> Subject: Re: [Rd] Ctrl-C with R.exe and Rterm.exe in R v1.9.0
> 
> 
> On Wed, 5 May 2004 12:57:29 +0200, "Henrik Bengtsson" 
> <hb at maths.lth.se> wrote :
> 
> 
> >Ctrl-C works as expected. Exiting R and you're back at a "clean" 
> >prompt. Now, try the same thing with R.exe (from a restarted
prompt):
> >
> >C:\Program Files\R>rw1090\bin\R.exe --vanilla --quiet
> >> ^C
> >> ^C
> >> 1+1
> >[1] 2
> >> Sys.sleep(100)
> >^C
> >C:\Program Files\R>
> >>
> >
> >Strange things happen. R seems still to be running but has 
> at the same 
> >time returned(?) the control back to the Command prompt.
> 
> Yes, that is indeed strange behaviour.  
> 
> Ctrl-C definitely presents problems.  For instance, on my 
> WinXP system running R from a Cygwin prompt, a Ctrl-C during 
> the Sys.sleep kills Rterm, whereas under the Windows cmd.exe 
> prompt it works properly as it did for you.

Cygwin is indeed where I noticed the problem first. For Cygwin, I know
that Ctrl-C did not kill Rterm on R v1.7.1 and before, but from R
v1.8.1 (don't know about R v1.8.0) it all of a sudden started to do
it. Maybe there is a clue somewhere in the diff's between v1.7.1 and
v1.8.x, which may also explain what is going on in R.exe and
Rterm.exe.

> I can guess at an explanation for what you saw, but I don't 
> know how to fix it:
> 
> - R (as opposed to Rterm) is a small .exe program that does a 
> little argument parsing, then runs Rterm.  It looks as though 
> the Ctrl-C is going to R, and killing that process, but 
> leaving the child process Rterm running.  But since both 
> Rterm and cmd.exe are reading and writing to standard file 
> handles, you get the messed up prompts.
> 
> I've just tried doing what the Windows documentation says 
> should work (adding this line before Rterm is called:
> 
> SetConsoleCtrlHandler(NULL, TRUE);  /* Ignore Ctrl-C; Rterm 
> will handle them */
> 
> but this didn't fix the problems, it just made them different 
> (i.e. Ctrl-C stopped working completely).  Rterm *does* set a 
> Ctrl-C handler, but it just isn't being called, as far as I can
tell.
> 
> A simple workaround is to run Rterm or Rgui rather than R.  
> If anyone knows a real fix, please let me know.
> 
> Duncan Murdoch

By the way, nice job with R.exe together will Rtools. It makes it more
convenient to work with R on both Windows and *nix. Thanks.

Cheers

Henrik Bengtsson



More information about the R-devel mailing list