cours/content/progsys/TDM_3-processus/index.md

1.5 KiB

Title Date Categories tags
TDM : Les Processus 2018-09-18
Programmation système
TD machine
TD Machine
programmation
C
processus

Télécharger les questions

Question 1

Sans exécuter le programme, je pense qu'il y aura Il y a 4 processus de créé.

q1.bin─┬─q1.bin
       │      
       ├─q1.bin
       └─q1.bin
Les processus se "clonent" et l'arbre des processus est plus complexe que prévu
il y a 8 processus au total.
$ ./q1.bin & 
[1] 8895
$ pstree 8895
q1.bin─┬─q1.bin─┬─q1.bin───q1.bin
       │        └─q1.bin 
       ├─q1.bin───q1.bin
       └─q1.bin

Question 2

Je suis parti au départ pour créer la commande avec une boucle for pour parcourir *argv mais il est plus simple de construire la commande avec &argv[1] qui retourne le tableau après l'élément 1.

int out = execvp(argv[1], &argv[1]);

J'ai aussi fait en sorte que le programme père se termine sur un EXIT_FAILURE si le fils se termine sur une erreur.

while ((pid = waitpid(pid, &status, 0)) > 0){
    (status == 0) ? exit(EXIT_SUCCESS) : exit(EXIT_FAILURE);
}

Télécharger mon code.

Question 3

Ma proposition était un peu complexe et surtout ne correspondant pas vraiment à la demande. J'ai donc modifié ma réponde (q3bis.c)

Télécharger mon code. Et la version remaniée code.