From a257c626196daed19492213a7a2ad5929c7e499e Mon Sep 17 00:00:00 2001 From: Pierre Valarcher Date: Wed, 29 Sep 2021 12:15:32 +0200 Subject: [PATCH] exos TP --- Exemples/04-Exec/exemple1.c | 31 +++++++++++++++++++++++++++++++ TP/TP-exec.md | 18 ++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 Exemples/04-Exec/exemple1.c create mode 100644 TP/TP-exec.md diff --git a/Exemples/04-Exec/exemple1.c b/Exemples/04-Exec/exemple1.c new file mode 100644 index 0000000..d0de005 --- /dev/null +++ b/Exemples/04-Exec/exemple1.c @@ -0,0 +1,31 @@ +#include +#include +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + int pid, fp, i, j; + char ch[4]; + + fp = open("fichier", O_RDWR); + pid = fork(); + + if (pid == 0) { + for (i = 0; i < 4; i++) { + read(fp, ch, 4); + printf("hello fils : %s\n", ch); + sleep(4); + } + } else { + for (j = 0; j < 3; j++) { + read(fp, ch, 4); + printf("Hello père : %s\n", ch); + sleep(5); + } + wait(NULL); + close(fp); + } + return 1; +} \ No newline at end of file diff --git a/TP/TP-exec.md b/TP/TP-exec.md new file mode 100644 index 0000000..9ddc62f --- /dev/null +++ b/TP/TP-exec.md @@ -0,0 +1,18 @@ + +# TP : primitives de recouvrement de la famille ```exec``` +## Exercice +Ecrivez un programme où un processus crée un fils, ce fils exécutant la commande ```ls –l```. Le père attend la fin de son fils. Par ailleurs, chacun des processus affiche son pid ; le fils affiche le pid de son père et le père affiche le pid de son fils. + +## Exercice +Améliorer le programme afin qu'il lance une commande shell passée sur la ligne de commande. + +## Exercice +On prend le programme de nom ```exemple1.c``` et on le modifie afin que le code du fils soit _recouvert_ par l'exécutable de nom ```fils1```. + +## Exercice +Positionner des variables d'environnement ```RUN_0, RUN_1, RUN_2...```, puis, écrire un programme les affichant les unes après les autres. Il faut utiliser la fonction ```getenv()``` pour récupérer la valeur d'une variable. Le programme devra afficher toutes les variables, jusqu'à ce qu'il y en ait une qui n'existe pas; par exemple s'il y a ```RUN_0```, ```RUN_1``` et ```RUN_3```, il ne faut afficher que la 0 et la 1 (comme la 2 n'existe pas, le programme doit s'arrêter). + + + +### Exercice +Refaire le contrôle de l'année dernière : ```Ctrle1ASR31-2020.pdf```