exos TP
This commit is contained in:
parent
c2b219f7a0
commit
a257c62619
31
Exemples/04-Exec/exemple1.c
Normal file
31
Exemples/04-Exec/exemple1.c
Normal 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
18
TP/TP-exec.md
Normal 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```
|
Loading…
Reference in New Issue
Block a user