This is the mail archive of the
mailing list for the Cygwin project.
Re: Limit to size of pipe
- From: Igor Pechtchanski <pechtcha at cs dot nyu dot edu>
- To: chris <caj at cs dot york dot ac dot uk>
- Cc: cygwin at cygwin dot com
- Date: Tue, 29 Jul 2003 12:26:59 -0400 (EDT)
- Subject: Re: Limit to size of pipe
- Reply-to: cygwin at cygwin dot com
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 :)
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).
|\ _,,,---,,_ firstname.lastname@example.org
ZZZzz /,`.-'`' -. ;-;;,_ email@example.com
|,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: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html