On 1/16/2007 5:12 PM, Dirk Eddelbuettel wrote: > On 16 January 2007 at 16:39, Duncan Murdoch wrote: > | 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?? > > Thanks to Robert (off-list), Henrik and Duncan -- I had indeed forgotten / > confused what on.exit() is for. Works as advertised here, but that wasn't > what I wanted at the time. Entirely my bad. > > | 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. > > Yes, I am dealing with a moderately more complicated situation (of > subscribing to some stateful internal 'services') and had not found > .onUnload to be as reliable as I had hoped. But that's another issue.
reg.finalizer is probably what you want. Since 2.4.0 it has had an option to be called when R shuts down. Duncan Murdoch ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel