delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2003/07/29/11:30:15

Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sources.redhat.com/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sources.redhat.com/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com
Message-ID: <3F2691B2.10307@cs.york.ac.uk>
Date: Tue, 29 Jul 2003 16:24:34 +0100
From: chris <caj AT cs DOT york DOT ac DOT uk>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.5b) Gecko/20030723 Thunderbird/0.1
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Limit to size of pipe
X-Scanner: exiscan *19hWHb-0004vA-Tm*4Sad55u/kv2*

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";

void main(void) {
  char inbuf[MSGSIZE];
  int p[2], j;
  int pid;
  if(pipe(p) == -1) exit(1);

  switch(pid = fork()){
  case -1:    exit(2);
  case 0:  /* if child then write down pipe */
    close(p[0]);  /* first close the read end of the pipe */
    write(p[1], msg1, MSGSIZE);
    break;
  default:   /* parent reads pipe */
    close(p[1]);  /* first close the write end of the pipe */
    int pipeval=read(p[0], inbuf, MSGSIZE);
    printf("pipeval:%d\n",pipeval);
    printf("Parent sent: %s\n", inbuf);
    wait(NULL);
  }
}





--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019