From 6912d672a545b3dc9dc9ebef17f72292e5f3a984 Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Tue, 5 Dec 2023 18:20:29 +0100 Subject: [PATCH] TP1 ex4, pas sur que le pere finit APRES tous ses fils, et pas juste l'un d'entre eux --- TP1/ex4 | Bin 0 -> 17056 bytes TP1/ex4.c | 101 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100755 TP1/ex4 create mode 100644 TP1/ex4.c diff --git a/TP1/ex4 b/TP1/ex4 new file mode 100755 index 0000000000000000000000000000000000000000..0cfb818833c539cbf62c3ac251ab3636743609b3 GIT binary patch literal 17056 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 +#include +#include +#include +#include + +int my_atoi(char *str) +{ + int i; + int posi; + int num; + + i = 0; + posi = 1; + num = 0; + while (str[i] == 32 || (str[i] >= 9 && str[i] <= 13)) + i++; + while (str[i] == '-' || str[i] == '+') + { + if (str[i] == '-') + posi = posi * -1; + i++; + } + while (str[i] >= 48 && str[i] <= 57) + { + num = num * 10; + num = num + (str[i] - 48); + i++; + } + return (num * posi); +} + +void my_putnbr(int nb) +{ + char c; + + if (nb < 0) + { + if (nb == -2147483648) + { + write(1, "-", 1); + write(1, "2", 1); + my_putnbr(147483648); + return ; + } + nb = nb * -1; + write(1, "-", 1); + } + if (nb >= 0 && nb < 10) + { + c = nb + '0'; + write(1, &c, 1); + } + if (nb >= 10) + { + my_putnbr(nb / 10); + my_putnbr(nb % 10); + } +} + +int main(int argc, char **argv) +{ + pid_t pid; + int i; + int j; + int n; + + i = 0; + j = 0; + if (argc != 2) + { + write(1, "T'es bourré, on veut qu'un seul chiffre qu'on t'dis\n", 53); + exit(1); + } + n = my_atoi(argv[1]); + while(j < n) + { + switch(pid=fork()) + { + case -1 : + write(2, "fork foireux\n", 13); + exit(errno); + case 0 : + my_putnbr(getpid()); + while (i < 10) + { + my_putnbr(i); + write(1, "\n", 1); + nanosleep((const struct timespec[]){{0, 500000000L}}, NULL); + i++; + } + exit(2); + } + j++; + } + wait(NULL); + write(1, "Fin du processus père de pid ", 30); + my_putnbr(getpid()); + write(1, ".\n", 3); + exit(0); +}