Gabor, You can grab the connection and destroy it via getConnection and then a standard close call. (it actually lists that it is "closed" already, but still in the set of existing connections. I can't speak to that difference).
> tryCatch( + readLines(tempfile(), warn = FALSE)[1], + error = function(e) NA, + warning = function(w) NA + ) [1] NA > rm(list=ls(all.names = TRUE)) > gc() used (Mb) gc trigger (Mb) max used (Mb) Ncells 257895 13.8 592000 31.7 416371 22.3 Vcells 536411 4.1 8388608 64.0 1795667 13.7 > > showConnections(all = TRUE) description 0 "stdin" 1 "stdout" 2 "stderr" 3 "/var/folders/79/l_n_5qr152d2d9d9xs0591lh0000gn/T//RtmpZRcxmh/file128a13bffc77" class mode text isopen can read can write 0 "terminal" "r" "text" "opened" "yes" "no" 1 "terminal" "w" "text" "opened" "no" "yes" 2 "terminal" "w" "text" "opened" "no" "yes" 3 "file" "r" "text" "closed" "yes" "yes" > con = getConnection(3) > con A connection with description "/var/folders/79/l_n_5qr152d2d9d9xs0591lh0000gn/T//RtmpZRcxmh/file128a13bffc77" class "file" mode "r" text "text" opened "closed" can read "yes" can write "yes" > close(con) > showConnections(all=TRUE) description class mode text isopen can read can write 0 "stdin" "terminal" "r" "text" "opened" "yes" "no" 1 "stdout" "terminal" "w" "text" "opened" "no" "yes" 2 "stderr" "terminal" "w" "text" "opened" "no" "yes" HTH, ~G On Thu, Dec 14, 2017 at 10:02 AM, Gábor Csárdi <csardi.ga...@gmail.com> wrote: > Consider this code. This is R 3.4.2, but based on a quick look at the > NEWS, this has not been fixed. > > tryCatch( > readLines(tempfile(), warn = FALSE)[1], > error = function(e) NA, > warning = function(w) NA > ) > > rm(list=ls(all.names = TRUE)) > gc() > > showConnections(all = TRUE) > > If you run it, you'll get a connection you cannot close(), i.e. the > last showConnections() call prints: > > ❯ showConnections(all = TRUE) > description > 0 "stdin" > 1 "stdout" > 2 "stderr" > 3 "/var/folders/59/0gkmw1yj2w7bf2dfc3jznv5w0000gn/T//Rtmpc7JqVS/ > filecc2044b2ccec" > class mode text isopen can read can write > 0 "terminal" "r" "text" "opened" "yes" "no" > 1 "terminal" "w" "text" "opened" "no" "yes" > 2 "terminal" "w" "text" "opened" "no" "yes" > 3 "file" "r" "text" "closed" "yes" "yes" > > AFAICT, readLines should close the connection: > > ❯ readLines > function (con = stdin(), n = -1L, ok = TRUE, warn = TRUE, encoding = > "unknown", > skipNul = FALSE) > { > if (is.character(con)) { > con <- file(con, "r") > on.exit(close(con)) > } > .Internal(readLines(con, n, ok, warn, encoding, skipNul)) > } > <environment: namespace:base> > > so maybe this just a symptom of an on.exit() issue? > > Or am I missing something and it is possible to close the connection? > > Thanks, > Gabor > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel -- Gabriel Becker, PhD Scientist (Bioinformatics) Genentech Research [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel