[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ale] C question



I was going to write this example before realizing it is probably online,
and I found it here:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html

... in the docs for standard pipe(2) behavior.  It looks like the stuff
after the ellipsis is in main or some other function whose beginning and
end aren't shown.

#include <stdlib.h>
#include <unistd.h>
...

int fildes[2];
const int BSIZE = 100;
char buf[BSIZE];
ssize_t nbytes;
int status;

status = pipe(fildes);
if (status == -1 ) {
    /* an error occurred */
    ...
}

switch (fork()) {
case -1: /* Handle error */
    break;

case 0:  /* Child - reads from pipe */
    close(fildes[1]);                       /* Write end is unused */
    nbytes = read(fildes[0], buf, BSIZE);   /* Get data from pipe */
    /* At this point, a further read would see end of file ... */
    close(fildes[0]);                       /* Finished with pipe */
    exit(EXIT_SUCCESS);

default:  /* Parent - writes to pipe */
    close(fildes[0]);                       /* Read end is unused */
    write(fildes[1], "Hello world\n", 12);  /* Write data on pipe */
    close(fildes[1]);                       /* Child will see EOF */
    exit(EXIT_SUCCESS);
}




On Fri, Apr 5, 2013 at 3:33 PM, Geoffrey Myers
<lists at serioustechnology.com>wrote:

> So, shaking some cobwebs loose here. How do I replace the following:
>
> system("echo stuff | somebinary arg1 arg2");
>
> With a fork/exec ??
>
> (Digging out my old C books....)
>
> --
> From my iPhone
> Geoffrey Myers
> _______________________________________________
> Ale mailing list
> Ale at ale.org
> http://mail.ale.org/mailman/listinfo/ale
> See JOBS, ANNOUNCE and SCHOOLS lists at
> http://mail.ale.org/mailman/listinfo
>



-- 
  Ed Cashin <ecashin at noserose.net>
  http://noserose.net/e/
  http://www.coraid.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.ale.org/pipermail/ale/attachments/20130405/bc438741/attachment.html>