Ajout de l'exo 3

This commit is contained in:
Tom MOGULJAK 2023-09-26 13:07:15 +02:00
parent 2402cba956
commit 0cecb7b410
2 changed files with 20 additions and 2 deletions

View File

@ -341,4 +341,22 @@ XXXXXXXX BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB BB |CCCCCCCCCCCCCCCC|
## Exercice 3 ## Exercice 3
> Que fait le programme [copy1byte.c](TP3/Exo3/copy1byte.c) ? Décommentez la ligne du `fork`. Expliquer ce qui se passe. > 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).

View File

@ -29,7 +29,7 @@ int main(int argc,char * argv[]){
outfd = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644); outfd = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC,0644);
assert(outfd >= 0); assert(outfd >= 0);
//p=fork(); // <- decommentez cette ligne p=fork(); // <- decommentez cette ligne
while(1){ while(1){