45 lines
1.1 KiB
C
45 lines
1.1 KiB
C
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <fcntl.h>
|
|
#include <unistd.h>
|
|
|
|
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);
|
|
}
|
|
} |