operating-systems/lab1/v7/using_pipes.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);
}
}