From 0cecb7b410416d3157f5ff25561f039e46640270 Mon Sep 17 00:00:00 2001 From: Tom Moguljak Date: Tue, 26 Sep 2023 13:07:15 +0200 Subject: [PATCH] Ajout de l'exo 3 --- README.md | 20 +++++++++++++++++++- TP3/Exo3/copy1byte.c | 2 +- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index de6b69f..1e552fd 100644 --- a/README.md +++ b/README.md @@ -341,4 +341,22 @@ XXXXXXXX BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB |CCCCCCCCCCCCCCCC| ## Exercice 3 -> Que fait le programme [copy1byte.c](TP3/Exo3/copy1byte.c) ? Décommentez la ligne du `fork`. Expliquer ce qui se passe. \ No newline at end of file +> Que fait le programme [copy1byte.c](TP3/Exo3/copy1byte.c) ? Décommentez la ligne du `fork`. Expliquer ce qui se passe. + +> Le programme [copy1byte.c](TP3/Exo3/copy1byte.c) copie le fichier `source` dans le fichier `destination` en utilisant des appels systèmes. Quand on décommente la ligne du `fork`, ce dernier est effectué après l'ouverture du fichier, donc le père et le fils ont deux descripteurs de fichier différents, l'offset n'est pas partagé donc le contenu du fichier sera celui du dernier à écrire. + +## Exercice 4 + +> Ecrire un programme qui crée un processus fils. + +>Dans le fils : + +- imprimer le retour de fork(), getpid(), getppid(). +- bloquer 4 secondes (sleep). +- se terminer avec exit(2). + +> Dans le père : + +- imprimer le retour de fork(), getpid(), getppid(). +- attendre la fin de son fils (wait()), et imprimer son code de retour. +- afficher alors la liste de tous les processus actifs (execl() avec ps -ef). \ No newline at end of file diff --git a/TP3/Exo3/copy1byte.c b/TP3/Exo3/copy1byte.c index 02fe937..fab6100 100644 --- a/TP3/Exo3/copy1byte.c +++ b/TP3/Exo3/copy1byte.c @@ -29,7 +29,7 @@ int main(int argc,char * argv[]){ outfd = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644); assert(outfd >= 0); - //p=fork(); // <- decommentez cette ligne + p=fork(); // <- decommentez cette ligne while(1){