[Rd] hook for when R quits
Duncan Murdoch
murdoch.duncan at gmail.com
Fri Mar 11 22:05:37 CET 2011
On 11/03/2011 3:11 PM, Henrik Bengtsson wrote:
> On Fri, Mar 11, 2011 at 11:07 AM, Prof Brian Ripley
> <ripley at stats.ox.ac.uk> wrote:
> > On Fri, 11 Mar 2011, Duncan Murdoch wrote:
> >
> >> On 11/03/2011 1:37 PM, Michael Lawrence wrote:
> >>>
> >>> Thanks for the suggestion, but I don't think that R finalizes all of its
> >>> objects when it quits. At least a simple test suggests that on Linux.
> >>
> >> Did you use onexit=TRUE? On Windows that appears to work...
>
> Agree - here an object finalizer is more appropriate (different from
> an end-of-session hook).
>
> >
> > It does work: RODBC makes extensive use of it, for exactly the purpose you
> > describe (or rather, the C_level equivalent of 'it').
>
> In help(reg.finalizer) it says:
>
> 'onexit': logical: should the finalizer be run if the object is
> still uncollected at the end of the R session?
>
> What environments, objects, search path etc are available when the
> finalizer is called this way when R exits? Is safe to always add
> 'onexit=TRUE' (which now defaults to FALSE), or should I expect an
> "exceptional" R system that the finalizer needs to account for?
To be very conservative, I would assume that nothing in R is available
other than things that are stored in that environment. That's probably
not true, but it would be safe. This mechanism is for finalizing things
that R doesn't know about.
If you want to be less conservative, then you could look at the source
code: currently R_RunExitFinalizers is the very first
part of the cleanup. I don't know if we guarantee this though.
Duncan Murdoch
> Is there any further documentation on what happens when an R session
> shuts down and in which order?
>
> /Henrik
>
> >
> >>
> >> Duncan Murdoch
> >>
> >>> Michael
> >>>
> >>> On Fri, Mar 11, 2011 at 10:19 AM, Jeffrey
> >>> Ryan<jeffrey.ryan at lemnica.com>wrote:
> >>>
> >>> > Take a look at reg.finalizer. You'd have to create an object
> >>> > internally that would persist until R exits - and a related function
> >>> > to handle cleanup of course.
> >>> >
> >>> > HTH
> >>> > Jeff
> >>> >
> >>> > On Fri, Mar 11, 2011 at 12:08 PM, Michael Lawrence
> >>> > <lawrence.michael at gene.com> wrote:
> >>> > > Hi,
> >>> > >
> >>> > > Is there any way that a package can listen for when R quits? The Qt
> >>> > stuff
> >>> > is
> >>> > > hooking into platform-specific event loops and when those die
> >>> > unexpectedly
> >>> > > (from the perspective of Qt), it aborts, causing an annoying error
> >>> > dialog.
> >>> > > If we could catch when R is killed, we could cleanup, like we do
> >>> > with
> >>> > > .onUnload.
> >>> > >
> >>> > > Thanks,
> >>> > > Michael
> >>> > >
> >>> > > [[alternative HTML version deleted]]
> >>> > >
> >>> > > ______________________________________________
> >>> > > R-devel at r-project.org mailing list
> >>> > > https://stat.ethz.ch/mailman/listinfo/r-devel
> >>> > >
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Jeffrey Ryan
> >>> > jeffrey.ryan at lemnica.com
> >>> >
> >>> > www.lemnica.com
> >>> >
> >>>
> >>> [[alternative HTML version deleted]]
> >>>
> >>> ______________________________________________
> >>> R-devel at r-project.org mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/r-devel
> >>
> >> ______________________________________________
> >> R-devel at r-project.org mailing list
> >> https://stat.ethz.ch/mailman/listinfo/r-devel
> >>
> >
> > --
> > Brian D. Ripley, ripley at stats.ox.ac.uk
> > Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
> > University of Oxford, Tel: +44 1865 272861 (self)
> > 1 South Parks Road, +44 1865 272866 (PA)
> > Oxford OX1 3TG, UK Fax: +44 1865 272595
> >
> > ______________________________________________
> > R-devel at r-project.org mailing list
> > https://stat.ethz.ch/mailman/listinfo/r-devel
> >
More information about the R-devel
mailing list