This is the mail archive of the mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Limit to size of pipe

On Tue, 29 Jul 2003, chris wrote:

> David Rothenberger wrote:
> >chris writes:
> > > Hello!
> > >
> > > Further to an earlier message I sent, I now attach an example. This
> > > tries to send a message of a fixed sized down a pipe. Under windows I
> > > can't seem to send much more than 25k down in one go, although I can
> > > send more if I chop it up into sections. Under linux however I can send
> > > as large amounts as I like. While it is possible to work around it, I
> > > thought I would mention it in case it was easy to fix, just no-one had
> > > requested it :)
> > >
> > > ------------
> > > Example program follows: setting MSGSIZE>25000ish on my computer causes
> > > fail (ie pipeval=-1)
> > > ------------
> > > #include <unistd.h>
> > > #include <stdio.h>
> > > #define MSGSIZE 23000
> > > char *msg1 = "message";
> >
> >I modified the program to allocate the message buffer to send on the
> >heap and to initialize the entire thing.  The test seems to work for
> >any size at that point.
> >
> <snip program>
> Thanks! I notice (by some fiddling) that it seems I have to instansiate
> (at least most of) the buffer before I send it. Is there some rule that
> you should instansiate memory before reading it? of course doing so is
> sensible, but I didn't know nessasary? Out of interest (because I
> couldn't actually find a 'mission plan'), what is the "plan" of Cygwin?
> to create a system wherebye any linux / unix program will compile
> without changes under windows? Or to simply make it much easier to
> convert but not try to support "stupid" activities?
> Having said that, I've been convinced I should change the program I'm
> converting from *BSD to not send stupidly large mostly-empty buffers
> anyway :)
> Chris

Cygwin's purpose is to provide a POSIX layer that helps in compiling
*portable* programs.  Relying on the C runtime to initialize automatic
arrays is non-portable, and probably won't work on many systems (including
Cygwin).  When in doubt, look at the SUS (which Cygwin tries to follow) --
if some implicit behavior is unspecified there, it's very likely to be
different on various Unix systems anyway, and you should explicitly
provide the behavior your program expects (e.g., initialize memory).
      |\      _,,,---,,_
ZZZzz /,`.-'`'    -.  ;-;;,_
     |,4-  ) )-,_. ,\ (  `'-'		Igor Pechtchanski, Ph.D.
    '---''(_/--'  `-'\_) fL	a.k.a JaguaR-R-R-r-r-r-.-.-.  Meow!

"I have since come to realize that being between your mentor and his route
to the bathroom is a major career booster."  -- Patrick Naughton

Unsubscribe info:
Problem reports:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]