#include #include #include #include int run_exchange(int in_pipe, int out_pipe) { } int main(void) { struct { int in_pipe; int out_pipe; } p2c_pipe, c2p_pipe; if (pipe2((int *) &p2c_pipe, O_DIRECT) == -1) { perror("Failed to create pipes\n"); return EXIT_FAILURE; } if (pipe2((int *) &c2p_pipe, O_DIRECT) == -1) { close(p2c_pipe.in_pipe); close(p2c_pipe.out_pipe); perror("Failed to create pipes\n"); return EXIT_FAILURE; } pid_t parent_pid = getpid(); pid_t child_pid = fork(); switch (child_pid) { case -1: close(p2c_pipe.in_pipe); close(p2c_pipe.out_pipe); close(c2p_pipe.in_pipe); close(c2p_pipe.out_pipe); perror("Failed to fork\n"); return EXIT_FAILURE; case 0: close(p2c_pipe.in_pipe); close(c2p_pipe.out_pipe); default: close(c2p_pipe.in_pipe); close(p2c_pipe.out_pipe); } }