This commit is contained in:
2025-09-23 13:26:43 +02:00
parent 096be7ae2c
commit b16eb85cbf

View File

@@ -7,7 +7,7 @@
rebours seconde après seconde à partir d'un nombre passé en arguments. Sur
chaque ligne, rebours affiche son pid et le nombre de secondes restantes.
```bash
[denis@portabledenis SYS-TP1]$ ./rebours 5
[denis@portabledenis src]$ ./rebours 5
2576552: debut
2576552: 5
2576552: 4
@@ -18,6 +18,39 @@
```
On utilisera `getpid` et `sleep`.
2. Complétez [parexec.c](./src/paraexec.c) prend en arguments de ligne de commande un nom de programme prog,
suivi dune liste arbitrairement longue darguments, et il exécute prog en parallèle (dans des processus)
sur chacun des arguments. Autrement dit, `./parexec prog arg1 arg2 ... argN` exécutera simulta-
nément toutes les commandes prog arg1 , prog arg2 ... prog argN chacune dans un processus
distinct. Testez avec le programme `rebours`.
```bash
[denis@portabledenis scr]$ ./parexec ./rebours 1 2 3
2586243: debut
2586243: 1
2586244: debut
2586244: 2
2586245: debut
2586245: 3
2586243: fin
2586244: 1
2586245: 2
2586244: fin
2586245: 1
2586245: fin
```
On utilisera `fork` et wait`.
3. Écrivez une version de `paraexec` qui prend un argumant supplémentaire N entre prog et arg1 qui indique
le nomnre maximum d'instancesde prog à lancer en parallèle. Lorsque ce nombre est atteint, `parexec` doit attendre la
fin d'un de ses fils pour en relancer un nouveau.
4. Modifiez votre programme `paraexec` pour que si une des instances de `prog` se termine anormalement alors il tue immédiatement
toutes les instances puis il quitte.
Pour testez, vous pouvez à la console envoyer un signal à un processus executé par `parexec`, ou dans rebours faire une division par
zéro, ou utilisé `abort`.
Utilisez `kill`, `WIFSIGNALED`
#### Ex2
Pour calculer le nombre $\pi$, on utilise la méthode de Monte-Carlo.
On tire aléatoirement des couples $(x,y)$ de nombres de