You may be running out of file descriptors because the pipe objects are not getting garbage collected often enough. Adding the line if (cnt %% 100 == 0) { cat(cnt, "\n"); gc() } to your loop lets it continue indefinitely.
Bill Dunlap TIBCO Software wdunlap tibco.com On Fri, Dec 6, 2019 at 4:29 AM Benjamin Tyner <bty...@gmail.com> wrote: > Andreas, > > How right you are! Still, I find it curious that in the context of the > while(TRUE) loop, I am allowed to do this 653 times, with failure on the > 654th attempt. Perhaps there is something asynchronous going on? If I > eliminate the looping, it does indeed fail (as expected) on the first > attempt to close the pipe. > > Regards > > Ben > > On 12/6/19 2:04 AM, Andreas Kersting wrote: > > Hi Benjamin, > > > > you cannot pipe to echo, since it does not read from stdin. > > > > echo just echos is first arg, i.e. echo /dev/stdin > /dev/null will echo > the string "/dev/stdin"to /dev/stdout, which is redirected to /dev/null. > > > > Try > > > > p <- pipe("cat > /dev/null", open = "w") > > > > instead. > > > > Regards, > > Andreas > > > > 2019-12-06 02:46 GMT+01:00 Benjamin Tyner<bty...@gmail.com>: > >> Not sure if this is a bug, so posting here first. If I run: > >> cnt <- 0L > >> while (TRUE) { > >> cnt <- cnt + 1L > >> p <- pipe("echo /dev/stdin > /dev/null", open = "w") > >> writeLines("foobar", p) > >> tryCatch(close(p), error = function(e) { print(cnt); stop(e)}) > >> } > >> > >> then once cnt gets to around 650, it fails with: > >> > >> [1] 654 > >> Error in close.connection(p) : ignoring SIGPIPE signal > >> > >> Should I not be using pipe() in this way? Here is my sessionInfo() > >> > >> R version 3.6.0 (2019-04-26) > >> Platform: x86_64-pc-linux-gnu (64-bit) > >> Running under: Ubuntu 18.04.3 LTS > >> > >> Matrix products: default > >> BLAS: /home/btyner/R360/lib64/R/lib/libRblas.so > >> LAPACK: /home/btyner/R360/lib64/R/lib/libRlapack.so > >> > >> locale: > >> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C > >> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8 > >> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8 > >> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C > >> [9] LC_ADDRESS=C LC_TELEPHONE=C > >> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C > >> > >> attached base packages: > >> [1] stats graphics grDevices utils datasets methods base > >> > >> loaded via a namespace (and not attached): > >> [1] compiler_3.6.0 > >> > >> Regards, > >> Ben > >> > >> ______________________________________________ > >> R-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel