#include #include #include #include #include void python(int input[2], int output[2]) { dup2(output[1], STDOUT_FILENO); dup2(input[0], STDIN_FILENO); close(output[0]); close(output[1]); close(input[0]); close(input[1]); char *const args[] = { "/usr/bin/python", NULL }; execv(args[0], args); _exit(EXIT_FAILURE); } int main(int argc, char *argv[]) { int input[2]; pipe(input); int output[2]; pipe(output); if (fork() == 0) python(input, output); FILE *inputf, *outputf; close(output[1]); close(input[0]); outputf = fdopen(output[0], "r"); inputf = fdopen(input[1], "w"); fputs("print 123\n", inputf); fclose(inputf); char tt; for (tt=0; tt<40; tt++) fputc(tt, inputf); int c; while ((c = fgetc(outputf)) != EOF) fputc(c, stdout); fputc(EOF, inputf); wait(NULL); return 0; }