I was using readLines to read data from a file which is being written to by 
another
process. readLines documentation says "If the connection is open it is read 
from its
current position". With R 4.4.1 on Linux 5.15.160 this is true but does not 
seem to be the
case as far as R 4.4.1 on MacOS 12.7.6 (Intel) is concerned. Here, the first 
write to the
file is read correctly but subsequent reads return nothing. The minimal program 
below
shows the behaviour and produces the following results:

Linux:
input 1: lines written/read: 4 / 4
input 2: lines written/read: 3 / 3
input 3: lines written/read: 2 / 2

MacOS:
input 1: lines written/read: 4 / 4
input 2: lines written/read: 3 / 0
input 3: lines written/read: 2 / 0

I have searched NEWS and found only 
https://bugs.r-project.org/show_bug.cgi?id=18555, but
I am not specifying an encoding so not sure whether it is relevant or not.

I also tried with a 1 second delay between flush and read, but this had no 
effect.

I have found an alternative, scan with skip of the number lines already read, 
and this
works on both Linux and MacOS.  But I would still like to know how to have 
readLines work
with open connections on MacOS.

Regards,
Martin

## Program to demonstrate the behaviour
## input data
rL <- list(paste0("Line ", 1:4), paste0("Line ", 1:3), paste0("Line ", 1:2))
## create an empty file and open write and read connections to the file
close(file("rL.log",open="w"))
rLconn.w <- file("rL.log", open="a")
rLconn.r <- file("rL.log", open="r")
## write the test data and read it
for (i in 1:3) {
    writeLines(rL[[i]], rLconn.w)
    flush(rLconn.w)
    out <- readLines(rLconn.r, warn=FALSE)
    writeLines(c(paste0("input ", i, ": lines",
                        " written/read: ", length(rL[[i]]),
                        " / ", length(out))))
}
close(rLconn.w)
close(rLconn.r)

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to