This commit is contained in:
Pierre Valarcher 2021-09-29 12:15:32 +02:00
parent c2b219f7a0
commit a257c62619
2 changed files with 49 additions and 0 deletions

View File

@ -0,0 +1,31 @@
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/wait.h>
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;
}

18
TP/TP-exec.md Normal file
View File

@ -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```