Re: [Rd] on.exit called on loading ?

From: Duncan Murdoch <>
Date: Tue 16 Jan 2007 - 21:39:02 GMT

On 1/16/2007 4:02 PM, Dirk Eddelbuettel wrote:
> I just found out that an .onLoad() function such as this stylized one (where
> I just renamed some identifiers)
> .onLoad <- function(lib, pkg) {
> require(zoo, quiet=TRUE, warn.conflicts=FALSE)
> library.dynam("foolib", pkg, lib )
> if (.Platform$OS.type != "windows") {
> initSomeServices()
> }
> if (.Platform$OS.type != "windows") {
> on.exit(closeSomeServices())
> }
> }
> actually triggers a call of 'closeSomeServices()'. I am probably
> misunderstanding something here -- but I thought on.exit() would only be
> called on, well, exit ?

It's the exit from the function, not the exit from the package (which isn't really all that well defined -- do you mean unloading, exit from R, detaching??

It's not very easy to have something be guaranteed to execute "when you're done". The RODBC package does it using an external pointer, which has a hook that is called when R shuts down. If it's good enough to execute on unloading but skip execution on shutdown, then .onUnload is available.

Duncan Murdoch mailing list Received on Wed Jan 17 08:42:09 2007

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Tue 16 Jan 2007 - 22:31:13 GMT.

Mailing list information is available at Please read the posting guide before posting to the list.