<div dir="ltr"><div>I was going to write this example before realizing it is probably online, and I found it here:<br><br><a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html">http://pubs.opengroup.org/onlinepubs/9699919799/functions/pipe.html</a><br>
<br></div>... 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.<br><br><pre><tt>#include <stdlib.h>
#include <unistd.h>
...
<br>
int fildes[2];
const int BSIZE = 100;
char buf[BSIZE];
ssize_t nbytes;
int status;
<br>
status = pipe(fildes);
if (status == -1 ) {
/* an error occurred */
...
}
<br>
switch (fork()) {
case -1: /* Handle error */
break;
<br>
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);
<br>
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);
}
</tt></pre><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Apr 5, 2013 at 3:33 PM, Geoffrey Myers <span dir="ltr"><<a href="mailto:lists@serioustechnology.com" target="_blank">lists@serioustechnology.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">So, shaking some cobwebs loose here. How do I replace the following:<br>
<br>
system("echo stuff | somebinary arg1 arg2");<br>
<br>
With a fork/exec ??<br>
<br>
(Digging out my old C books....)<br>
<br>
--<br>