[Rd] readLines() for non-blocking pipeline behaves differently in R 3.5
Randy Lai
randy.cs.lai at gmail.com
Wed Apr 25 23:34:38 CEST 2018
It seems that the behavior of readLines() in R 3.5 has changed for non-blocking pipeline.
Consider the following R script, which reads from STDIN line by line.
```
con <- file("stdin")
open(con, blocking = FALSE)
while (TRUE) {
txt <- readLines(con, 1)
if (length(txt) > 0) {
cat(txt, "\n", file = stdout())
}
Sys.sleep(0.1)
}
close(con)
```
In R 3.4.4, it works as expected.
```
(randymbpro)-Desktop$ echo "abc\nfoo" | R --slave -f test.R
abc
foo
```
In R 3.5, only the first line is printed
```
(randymbpro)-Desktop$ echo "abc\nfoo" | R --slave -f test.R
abc
```
Is this change expected? If I change `blocking` to `TRUE` above, the above code would
work. But I need non-blocking connection in my use case of piping buffer from
another program.
Best,
R 3.5 @ macOS 10.13
Randy
[[alternative HTML version deleted]]
More information about the R-devel
mailing list