Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #9411

Re: Create an istream from an fd?

From Nobody <nobody@nowhere.com>
Subject Re: Create an istream from an fd?
Date 2011-08-28 20:03 +0100
Message-Id <pan.2011.08.28.19.03.15.384000@nowhere.com>
Newsgroups comp.lang.c++
References (3 earlier) <j39ep8$tv5$1@dont-email.me> <9btaq6FopsU5@mid.individual.net> <2be71f2e-9a18-42ab-a7ec-bc7f8ccb215e@i9g2000yqk.googlegroups.com> <pan.2011.08.28.03.31.29.633000@nowhere.com> <9btskaFopsU6@mid.individual.net>
Organization Zen Internet

Show all headers | View raw


On Sun, 28 Aug 2011 15:56:58 +1200, Ian Collins wrote:

>>> (The standard could have required an implementation defined
>>> typedef for the file descriptor in filebuf, and a constructor
>>> for that, but as far as I know, no one proposed such a thing.)
>>
>> It could have required a version of filebuf::open() (or similar) taking
>> a FILE*, given that<cstdio>  is part of the standard.
> 
> Then you would end up with two layers of buffering

I see no reason why you would need two layers of buffering. The streambuf
can rely upon the stdio layer's buffering; it doesn't have to provide its
own.

> and considering the similarity between C's fopen and constructing an
> fstream,  gain very little.

fopen() and freopen() are typically not the only way to get a FILE*, even
if they're the only mechanisms specified by the standard.

It's one thing to only specify the most portable mechanisms for creating a
stdio stream, but another thing to assume that no other mechanisms exist,
effectively treating stdio as a hermetically-sealed unit which isn't to be
extended.

As it stands, any implementation wishing to extend the mechanisms for
creating streams has to do so twice: once for cstdio, once for ios.

> It also wouldn't solve one of the most common (at least for me) 
> requirements: a stream over an existing file descriptor that isn't a 
> regular file.

fdopen() doesn't care whether the descriptor refers to a regular file.
fdopen() isn't portable, but then neither are descriptors.

And whatever's there for stdin (etc) and cin (etc) already has to deal
with whatever the standard descriptors are associated with, whether a
file, tty, pipe, socket, etc.

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Create an istream from an fd? Noah Roberts <roberts.noah@gmail.com> - 2011-08-26 08:54 -0700
  Re: Create an istream from an fd? Leigh Johnston <leigh@i42.co.uk> - 2011-08-26 17:05 +0100
  Re: Create an istream from an fd? Victor Bazarov <v.bazarov@comcast.invalid> - 2011-08-26 12:20 -0400
  Re: Create an istream from an fd? Vaclav Zeman <vzeman79@sh.cvut.cz> - 2011-08-26 18:34 +0200
  Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-27 08:48 +1200
  Re: Create an istream from an fd? "Alf P. Steinbach" <alf.p.steinbach:usenet@gmail.com> - 2011-08-27 01:26 +0200
    Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-27 11:30 +1200
      Re: Create an istream from an fd? "Alf P. Steinbach" <alf.p.steinbach:usenet@gmail.com> - 2011-08-27 02:46 +0200
        Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-28 10:52 +1200
          Re: Create an istream from an fd? James Kanze <james.kanze@gmail.com> - 2011-08-27 16:35 -0700
            Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-28 04:31 +0100
              Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-28 15:56 +1200
                Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-28 20:03 +0100
                Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-29 07:52 +1200
              Re: Create an istream from an fd? James Kanze <james.kanze@gmail.com> - 2011-08-29 03:54 -0700
                Re: Create an istream from an fd? Leigh Johnston <leigh@i42.co.uk> - 2011-08-29 13:55 +0100
                Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-29 20:12 +0100
                Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-30 07:49 +1200
                Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-30 04:40 +0100
                Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-30 15:51 +1200
                Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-31 00:03 +0100
                Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-31 11:55 +1200
                Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-09-02 00:50 +0100
            Re: Create an istream from an fd? Ian Collins <ian-news@hotmail.com> - 2011-08-28 16:04 +1200
  Re: Create an istream from an fd? Nobody <nobody@nowhere.com> - 2011-08-27 02:40 +0100

csiph-web