diff --git a/ANALE-1/EXO2/SUJET/dijkstra.h b/ANALE-1/EXO2/SUJET/dijkstra.h index 25abaef..35f2f23 100644 --- a/ANALE-1/EXO2/SUJET/dijkstra.h +++ b/ANALE-1/EXO2/SUJET/dijkstra.h @@ -9,6 +9,8 @@ */ int sem_create(key_t cle, int initval); + + /** * take a token on the semaphore semid or wait if none available */ diff --git a/ANALE-1/EXO2/SUJET/p1.c b/ANALE-1/EXO2/SUJET/p1.c index a9b8a1e..e300750 100644 --- a/ANALE-1/EXO2/SUJET/p1.c +++ b/ANALE-1/EXO2/SUJET/p1.c @@ -20,7 +20,12 @@ void t2() } int main () { + int semt1 = sem_create(CLE_SEM_T1,0); + int semt2 = sem_create(CLE_SEM_T2,0); + t1(); + V(semt1); t2(); + V(semt2); return 0; } diff --git a/ANALE-1/EXO5/launcher b/ANALE-1/EXO5/launcher new file mode 100755 index 0000000..f2651a9 Binary files /dev/null and b/ANALE-1/EXO5/launcher differ diff --git a/ANALE-1/EXO5/launcher.c b/ANALE-1/EXO5/launcher.c new file mode 100644 index 0000000..0ffb379 --- /dev/null +++ b/ANALE-1/EXO5/launcher.c @@ -0,0 +1,54 @@ +#include +#include +#include +#include +#include + + + +int main(void) +{ + int tube[2]; + int tube2[2]; + int res = pipe(tube); + if (res == -1) { + perror("Création Pipe"); exit(-1); + } + int res2 = pipe(tube2); + if (res2 == -1) { + perror("Création Pipe"); exit(-1); + } + + pid_t pid_wc = fork(); + if (pid_wc == 0) { + // lit depuis tube -> stdin + close(tube[1]); + dup2(tube[0], 0); + close(tube[0]); + + // écrit vers tube2 -> stdout + close(tube2[0]); // on ne lit pas tube2 ici + dup2(tube2[1], 1); + close(tube2[1]); + + execlp("cat", "cat",NULL); // ou "wc", "-c", NULL pour compter octets, etc. + perror("cat wc"); + _exit(1); + } + pid_t pid_data = fork(); + if (pid_data == 0) { + close(tube[0]); + write(tube[1],"Bonjour tous le monde\nJe m'appelle Ronan\n",strlen("Bonjour tous le monde\nJe m'appelle Ronan\n")); + close(tube[1]); + } + pid_t pid_read = fork(); + if (pid_read == 0) { + char temp[500]; + close(tube2[1]); + read(tube2[0],&temp,sizeof(temp)); + printf("%s",temp); + close(tube2[0]); + } + + return 0; +} \ No newline at end of file