From b46722b3e6bebf1fbf64afac0b2425d5fc3bd2bb Mon Sep 17 00:00:00 2001 From: Ronan Fourneuve Date: Mon, 11 Aug 2025 14:29:20 +0000 Subject: [PATCH] Ajout exo3 --- ANALE-1/EXO3/RESOLUTION/a.out | Bin 0 -> 16376 bytes ANALE-1/EXO3/RESOLUTION/pipeline | Bin 0 -> 16376 bytes ANALE-1/EXO3/RESOLUTION/pipeline.c | 83 +++++++++++++++++++++++++++++ ANALE-1/EXO3/SUJET/sortie | 66 +++++++++++++++++++++++ 4 files changed, 149 insertions(+) create mode 100755 ANALE-1/EXO3/RESOLUTION/a.out create mode 100755 ANALE-1/EXO3/RESOLUTION/pipeline create mode 100644 ANALE-1/EXO3/RESOLUTION/pipeline.c create mode 100644 ANALE-1/EXO3/SUJET/sortie diff --git a/ANALE-1/EXO3/RESOLUTION/a.out b/ANALE-1/EXO3/RESOLUTION/a.out new file mode 100755 index 0000000000000000000000000000000000000000..60b7cea0182a27a1921ffb52de4ddeca83d2edd5 GIT binary patch literal 16376 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 literal 0 HcmV?d00001 diff --git a/ANALE-1/EXO3/RESOLUTION/pipeline b/ANALE-1/EXO3/RESOLUTION/pipeline new file mode 100755 index 0000000000000000000000000000000000000000..e87aecf87a4f517fbf524a1532ae3f211ef290f1 GIT binary patch literal 16376 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 +#include +#include +#include +#include + +int main(void) { + int tube1[2],tube2[2]; + int res1 = pipe(tube1); + if (res1 == -1){ + perror("Création Pipe 1"); exit(-1); + } + int res2 = pipe(tube2); + if (res2 == -1){ + perror("Création Pipe 1"); exit(-1); + } + + // --- CUT --- + pid_t pid_cut = fork(); + if (pid_cut == -1) { perror("fork cut"); exit(EXIT_FAILURE); } + if (pid_cut == 0) { + close(tube1[1]); + close(tube2[0]); + if (dup2(tube1[0], STDIN_FILENO) == -1) { perror("dup2 cut in"); _exit(1); } + if (dup2(tube2[1], STDOUT_FILENO) == -1) { perror("dup2 cut out"); _exit(1); } + close(tube1[0]); + close(tube2[1]); + execlp("cut", "cut", "-d,", "-f3", NULL); + perror("execlp cut"); + _exit(127); + } + + + // SORT + pid_t pid_sort = fork(); + if (pid_sort == -1) { perror("fork sort"); exit(EXIT_FAILURE); } + if (pid_sort == 0) { + close(tube1[0]); close(tube1[1]); + close(tube2[1]); + if (dup2(tube2[0], STDIN_FILENO) == -1) { perror("dup2 sort in"); _exit(1); } + close(tube2[0]); + + int fd = open("sortie", O_CREAT | O_WRONLY | O_TRUNC, 0644); + if (fd == -1) { perror("open sortie"); _exit(1); } + if (dup2(fd, STDOUT_FILENO) == -1) { perror("dup2 sortie"); _exit(1); } + close(fd); + + execlp("sort", "sort", NULL); + perror("execlp sort"); + _exit(127); + } + + // --- GREP --- + pid_t pid_grep = fork(); + if (pid_grep == -1) { perror("fork grep"); exit(EXIT_FAILURE); } + if (pid_grep == 0) { + close(tube2[0]); close(tube2[1]); + close(tube1[0]); + + int fd = open("server.log", O_RDONLY); + if (fd == -1) { perror("open server.log"); _exit(1); } + if (dup2(fd, STDIN_FILENO) == -1) { perror("dup2 grep in"); _exit(1); } + close(fd); + + if (dup2(tube1[1], STDOUT_FILENO) == -1) { perror("dup2 grep out"); _exit(1); } + close(tube1[1]); + + execlp("grep", "grep", "invalid credentials", NULL); + perror("execlp grep"); + _exit(127); + } + + // Parent + close(tube1[0]); close(tube1[1]); + close(tube2[0]); close(tube2[1]); + + int status; + waitpid(pid_grep, &status, 0); + waitpid(pid_cut, &status, 0); + waitpid(pid_sort, &status, 0); + return 0; +} \ No newline at end of file diff --git a/ANALE-1/EXO3/SUJET/sortie b/ANALE-1/EXO3/SUJET/sortie new file mode 100644 index 0000000..16b9da6 --- /dev/null +++ b/ANALE-1/EXO3/SUJET/sortie @@ -0,0 +1,66 @@ +user_id: 1000 +user_id: 1001 +user_id: 1002 +user_id: 1002 +user_id: 1002 +user_id: 1006 +user_id: 1006 +user_id: 1007 +user_id: 1010 +user_id: 1011 +user_id: 1011 +user_id: 1011 +user_id: 1012 +user_id: 1014 +user_id: 1019 +user_id: 1021 +user_id: 1022 +user_id: 1023 +user_id: 1025 +user_id: 1025 +user_id: 1027 +user_id: 1028 +user_id: 1030 +user_id: 1031 +user_id: 1032 +user_id: 1034 +user_id: 1034 +user_id: 1035 +user_id: 1036 +user_id: 1037 +user_id: 1038 +user_id: 1038 +user_id: 1039 +user_id: 1039 +user_id: 1043 +user_id: 1043 +user_id: 1047 +user_id: 1050 +user_id: 1054 +user_id: 1058 +user_id: 1064 +user_id: 1064 +user_id: 1064 +user_id: 1066 +user_id: 1066 +user_id: 1066 +user_id: 1069 +user_id: 1070 +user_id: 1071 +user_id: 1074 +user_id: 1074 +user_id: 1076 +user_id: 1078 +user_id: 1078 +user_id: 1079 +user_id: 1080 +user_id: 1081 +user_id: 1081 +user_id: 1084 +user_id: 1087 +user_id: 1093 +user_id: 1094 +user_id: 1094 +user_id: 1096 +user_id: 1096 +user_id: 1097