[R] pipe and binary i/o (on Linux)

ripley@stats.ox.ac.uk ripley at stats.ox.ac.uk
Tue Aug 6 08:59:40 CEST 2002


On Mon, 5 Aug 2002 ripley at stats.ox.ac.uk wrote:

> pipe predates readBin, and no one has seen a reason to do this before you.

However, gzfile should work, and bzfile *always* opens with "rb".  Here's
an example on RH7.2:

> zz <- gzfile("testbin.gz", "wb")
> writeBin(1:10, zz)
> close(zz)
> zz <- gzfile("testbin.gz", "rb")
> readBin(zz, integer(), 4)
[1] 1 2 3 4
> readBin(zz, integer(), 6)
[1]  5  6  7  8  9 10
> close(zz)
> zz <- pipe("gzcat testbin.gz", "rb")
Error in pipe("gzcat testbin.gz", "rb") : unable to open connection
In addition: Warning message:
cannot open cmd `gzcat testbin.gz'

so pipe has problems, as on Linux popen does not respect "rb" (although on
other platforms it seems to).

> It's an adequate fix.

On Linux, that is: Windows needs the "b".  I've put a full fix in R-devel.

>
> On Mon, 5 Aug 2002, Huntsinger, Reid wrote:
>
> > I often want to use "pipe" with "readBin" to read (binary) data from the
> > standard output of a Perl or C program. For that I need "pipe" to work with
> > the "open='rb'" option. It never worked for me, and after a look at the
> > connections.c file, I see that in "pipe_open" the mode gets passed directly
> > to "popen" (I'm using Linux on an Intel machine). Popen doesn't know "rb"
> > and fails. I modified the pipe function in connection.c to pass only the
> > first character of the mode. This seems to work (fingers crossed). Then I
> > noticed gzfile has the same problem, but bzfile doesn't, and uses the same
> > solution as I did for pipe. Can I assume that this is a correct fix? Or were
> > there reasons that pipe and gzfile wouldn't allow "rb"?
> >
> > Thanks,
> >
> > Reid Huntsinger
>
> [irrelevant message deleted]
>
> --
> Brian D. Ripley,                  ripley at stats.ox.ac.uk
> Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
> University of Oxford,             Tel:  +44 1865 272861 (self)
> 1 South Parks Road,                     +44 1865 272860 (secr)
> Oxford OX1 3TG, UK                Fax:  +44 1865 272595
>
> -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
> r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
> Send "info", "help", or "[un]subscribe"
> (in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
> _._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272860 (secr)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595

-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._



More information about the R-help mailing list