#include #include #include #include #include int main(int argc, char *argv[]) { int fcp[2]; int fpc[2]; pid_t pid; if (pipe(fcp) == -1) { printf("pipe failed\n"); return -1; } if (pipe(fpc) == -1) { printf("pipe failed\n"); return -1; } if ((pid = fork()) != -1) { if (pid == 0) { // child // char const *arg[3]; // arg[0] = "bc"; // arg[1] = "-l"; // arg[2] = NULL; close(fpc[1]); close(fcp[0]); char *buf = malloc(sizeof(char) * 1000); const char *prefix = "INPUT: "; memcpy(buf, prefix, strlen(prefix) + 1); read(fpc[0], buf + (strlen(prefix)), 1000 - strlen(prefix) - 1); write(fcp[1], buf, 1000); // execvp(arg[0], arg); } else { // parent close(fpc[0]); close(fcp[1]); const char *data = "testdata"; char *buf = malloc(sizeof(char) * 1000); // write(fpc[1], data, strlen(data) + 1); FILE *fd = fopen(fpc[1], "w"); fprintf(fd, "ddd"); read(fcp[0], buf, 1000); printf("%s\n", buf); } } }