[Rd] Sweave resource leak: leftover temp files (PR#7998)
ripley@stats.ox.ac.uk
ripley at stats.ox.ac.uk
Tue Jul 12 12:54:46 CEST 2005
This is actually a Windows bug. Those files are unlink()ed, and it seems
Windows is not respecting that (not an unknown phenomenon). I have tried
a few workarounds, and am about to commit one that seems to work.
No files are left over on a decent operating system, e.g. Solaris or FC3
Linux.
On Fri, 8 Jul 2005 murdoch at stats.uwo.ca wrote:
> Harold, I've taken a closer look at your example and I'd call this an
> Sweave bug. It creates tempfiles each time you run it, and doesn't
> delete them at the end. For example:
>
> > list.files(tempdir())
> character(0)
> > testfile <- system.file("Sweave", "Sweave-test-1.Rnw", package = "utils")
> > Sweave(testfile, out="junk.tex")
> Writing to file junk.tex
> Processing code chunks ...
> 1 : print term verbatim
> 2 : term hide
> 3 : echo print term verbatim
> 4 : term verbatim
> 5 : echo term verbatim
> 6 : echo term verbatim eps pdf
> 7 : echo term verbatim eps pdf
>
> You can now run LaTeX on 'junk.tex'
> > list.files(tempdir())
> [1] "Rf10523" "Rf13872" "Rf17129" "Rf2055" "Rf2203" "Rf2403" "Rf27095"
> [8] "Rf2892" "Rf31415" "Rf5290" "Rf6251" "Rf6482" "Rf7055" "Rf724"
> > Sweave(testfile, out="C:/temp/junk.tex")
> Writing to file C:/temp/junk.tex
> Processing code chunks ...
> 1 : print term verbatim
> 2 : term hide
> 3 : echo print term verbatim
> 4 : term verbatim
> 5 : echo term verbatim
> 6 : echo term verbatim eps pdf
> 7 : echo term verbatim eps pdf
>
> You can now run LaTeX on 'C:/temp/junk.tex'
> > list.files(tempdir())
> [1] "Rf10523" "Rf12679" "Rf1311" "Rf13484" "Rf13872" "Rf17129" "Rf17288"
> [8] "Rf2055" "Rf21774" "Rf2203" "Rf23417" "Rf2403" "Rf27095" "Rf2892"
> [15] "Rf29444" "Rf31128" "Rf31415" "Rf32520" "Rf3338" "Rf5290" "Rf5551"
> [22] "Rf6251" "Rf6482" "Rf7055" "Rf724" "Rf7543" "Rf758" "Rf7673"
> > unlink(list.files(tempdir(),full=T))
> > list.files(tempdir())
> character(0)
>
> Harold: a workaround for this would be to wrap your Sweave call in
> something like this:
>
> keep <- list.files(tempdir(), full=TRUE) # keep previous temp files
>
> ... Call Sweave here ...
>
> temps <- list.files(tempdir(), full=TRUE)
> unlink(temps[!(temps %in% keep)]) # delete the newly created ones
>
> ______________________________________________
> 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
More information about the R-devel
mailing list