From mdsumner at gmail.com  Wed Oct 23 03:45:06 2013
From: mdsumner at gmail.com (Michael Sumner)
Date: Wed, 23 Oct 2013 12:45:06 +1100
Subject: [Rd] interrupting Sweave leaves open sink connection
Message-ID: <CAAcGz9_eB7nUgrDuAroEfP6bwg-mMjXgqMeokVzRXGj0y_jDQQ@mail.gmail.com>

Hello, if I interrupt Sweave while it's processing a file it seemingly
leaves an open sink connection that hides printed output.

Can this be changed to reset the sink on exit?  I've been baffled by
this for years.

This is seen in Windows (R Under development (unstable) (2013-10-20
r64082))  and an older Linux (R version 3.0.0 (2013-04-03)).

Run the code below in two parts with a manual interrupt to 1) to see it.

Cheers, MIke.

## 1)

## this code creates a temporary file to run Sweave

## interrupt this code before Sweave() finishes

txt <-  c("\\documentclass[a4paper]{article}", "\\title{Sweave bail out}",
"\\author{M. Sumner}", "\\begin{document}", "\\maketitle", "",
"Run a loop and bail out when Sweave()ing.", "", "<<>>=",
"for (i in seq_len(1e6)) {", "    if (i %% 1000 == 0)
print(sprintf(\"%i\", i))",
"    Sys.sleep(0.5)", "}", "@", "", "\\end{document}")

f <- tempfile()
writeLines(txt, f)

Sweave(f)

## 2)
## now no printed output is seen
print(1)
##

sink(NULL)

## now it's back
print(1)
## [1] 1

## tidy up
## unlink(f)





-- 
Michael Sumner
Hobart, Australia
e-mail: mdsumner at gmail.com



[Rd] interrupting Sweave leaves open sink connection
Michael Sumner