From owner-freebsd-current Wed Oct 14 09:06:34 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id JAA13150 for freebsd-current-outgoing; Wed, 14 Oct 1998 09:06:34 -0700 (PDT) (envelope-from owner-freebsd-current@FreeBSD.ORG) Received: from sage1.sagecorp.com ([204.250.198.2]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id JAA13142 for ; Wed, 14 Oct 1998 09:06:31 -0700 (PDT) (envelope-from djw@sage1.sagecorp.com) Received: from localhost (djw@localhost) by sage1.sagecorp.com (8.7.5/8.7.3) with SMTP id KAA09450; Wed, 14 Oct 1998 10:12:57 -0600 (MDT) Date: Wed, 14 Oct 1998 10:12:57 -0600 (MDT) From: Darren Whittaker To: Mike Smith cc: freebsd-current@FreeBSD.ORG, john.young@openmarket.com Subject: Re: problem in 3.0 In-Reply-To: <199810141601.JAA01049@dingo.cdrom.com> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-current@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG The fact of the matter is that date only returned output once, why did it not return output 10 times? -Darren ------------------ Darren Whittaker Senior Software Engineer Small Enterprise Group Open Market, Inc. On Wed, 14 Oct 1998, Mike Smith wrote: > > Thank you for your email. I have taken your code and modified it to run as > > a cgi: > > > > #include > > #include > > #include > > > > int main(int argc, char *argv[]) > > { > > int i, j; > > char buf[256]; > > FILE *p; > > > > /* output the head */ > > printf("Content-type: text/html\n"); > > fflush(stdout); > > printf("\nTESTING"); > > printf("

TESTING


\n"); > > printf("

\n");
> >   fflush(stdout);
> > 
> > /* loop using popen */
> >   for (i = 0; i < 10; i++)
> >   {
> >      buf[0] = '\0';
> >      if ((p = popen("/bin/date", "r")) == NULL)
> >      {
> >        printf("popen error: %s\n",strerror(errno));
> >        continue;
> >      }
> >      fgets(buf, sizeof(buf) - 1, p);
> >      printf(buf);
> > 
> >      if ((j = pclose(p)) != 0)
> >        printf("pclose error: %s [%d]\n",strerror(j),j);
> 
> This is incorrect; it should read
> 
>       if (pclose(p) == -1)
>         printf("pclose error: %s [%d]\n", strerror(errno), errno);
> 
> See the manpage for pclose().
> 
> > Here is some of the output when I run it from the web browser:
> > 
> > Wed Oct 14 07:00:13 PDT 1998
> > pclose error: No child processes [10]
> ...
> > What do you think the problem might be?
> 
> A return value of 10 from pclose() is not an error; it's the exit code 
> of the child process.  /bin/date does not appear to reliably set its 
> exit code.
> 
> -- 
> \\  Sometimes you're ahead,       \\  Mike Smith
> \\  sometimes you're behind.      \\  mike@smith.net.au
> \\  The race is long, and in the  \\  msmith@freebsd.org
> \\  end it's only with yourself.  \\  msmith@cdrom.com
> 
> 
> 


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message