Programming and posix - April 2002

April 3, 2002
Solution Symposium
Page 52
hp e3000
programming
and posix
pipes the hard pipe() way
#include <stdio.h>
#include <unistd.h>
int main() {
int request[2], response[2]; char buf[256];
pipe(request); pipe(response); /* create request & response pipes */
if (fork() > 0) { /* parent */
close(request[0]); close(response[1]); /* close unneeded ends*/
write(request[1], "123\n", 4); close(request[1]); /* write req*/
buf[read(response[0],buf,sizeof(buf))] = 0; /* read response */
printf("result = %s\n",buf);
} else { /* child */
close(request[1]); close(response[0]); /* close unneeded ends*/
dup2(request[0],0); dup2(response[1],1); /*redirect stdin&stdout*/
execl("/bin/sed", "/bin/sed", "-e", "s/^/pipe = /", NULL);
}
}