Skip to content

Run package code on R shutdown?

4 messages · Brian Ripley, Henrik Bengtsson, Duncan Murdoch

#
I'm sure I've seen this discussed before, but haven't been able to find 
it.  I'd like some package code to be run when R is shut down 
(approximately when a user's .Last function would be run), to clean up 
properly.  What is the best way to do this?

Duncan Murdoch
#
On Sun, 9 Apr 2006, Duncan Murdoch wrote:

            
The only way I know to do this is to use a finalizer, as we don't run
.Last.lib on shutdown.  (That's how RODBC does it.)

Now, as I recall this cannot be done from reg.finalizer, only from the 
C-level R_RegisterCFinalizerEx, which has an optional argument to ensure 
that the finalizer is run 'onexit'.   (I have never understood why we have 
that restriction, nor why reg.finalizer is primitive and not .Internal.)
#
On 4/10/06, Duncan Murdoch <murdoch at stats.uwo.ca> wrote:
I tried to do this some time ago.  My conclusion then is that it
cannot be done with a guarantee, because R can exit in different ways.
 I implemented what I had an came up with an onSessionExit() method
available in R.utils.  Check that out for a start.  It modifies
.Last(), but that can be circumvented by quit(callLast=FALSE).

/Henrik
--
Henrik Bengtsson
Mobile: +46 708 909208 (+2h UTC)
#
On 4/10/2006 6:16 AM, Prof Brian Ripley wrote:
Thanks!

Duncan Murdoch