#include #include #include #include #include #define CHILDBIN "./com-child" int main(int argc, char * argv[]) { if (argc < 2) { fprintf (stderr, "usage : %s string\n", argv[0]); exit (EXIT_FAILURE); } int in[2], out[2]; FILE *in_fp, *out_fp; pipe(in); pipe(out); if (fork()) { // PARENT close(in[0]); close(out[1]); write (in[1], argv[1], strlen(argv[1])); char buf[BUFSIZ]; read (out[0], buf, BUFSIZ); buf[BUFSIZ-1] = '\0'; printf ("response : %s\n", buf); } else { // CHILD close(0); close(1); dup2(in[0], 0); dup2(out[1], 1); execv(CHILDBIN, NULL); } int status; wait(&status); // do something with the status return EXIT_SUCCESS; }