• Document: TP avec corrections Cours «Programmation Système» Programme : Filière SMI S6
  • Size: 321.94 KB
  • Uploaded: 2018-10-11 14:05:38
  • Status: Successfully converted


Some snippets from your converted document:

UNIVERISTE MOHAMMED PREMIER Faculté des Sciences d’Oujda Oujda - Maroc Les TD/TP avec corrections Cours « Programmation Système » Programme : Filière – SMI – S6 Pr. El Mostafa DAOUDI Département de Mathématiques et d’Informatique Année universitaire 2015/2016 Université Mohammed Premier Année universitaire 2015-2016 Faculté des Sciences Filière SMI Département d’Informatique Module : Programmation Système Semestre : S6 TD/TP: Série Numéro 1 Exercice 1 : Considérons les programmes suivants : #include<unistd.h> main() { fork() && fork() ; } #include<unistd.h> main() { ( fork() || fork() ) ; } #include<unistd.h> main( ) { fork(); fork(); fork(); } 1. Sans les exécuter, donner l’arbre de processus généré par l’exécution de chaque programme. 2. Implémenter et exécuter ces programmes pour comparer les résultats. Exercice2 : 1. Donnez l’arbre de processus généré par le programme suivant : #include<stdio.h> #include<unistd.h> main() { fork(); if (fork()) if (fork()); sleep(10) ; } 2. Donner l’arbre de processus généré par le programme suivant : #include<stdio.h> #include<unistd.h> main() { fork(); if (fork()) if (fork()); fork(); 2 sleep(10); } Exercice 3 : Ecrire un programme telle que l’arbre de processus généré par son exécution et un : - arbre binaire de profondeur 1 - arbre binaire de profondeur 2 Exercice 4 : Considérons le programme suivant: #include <stdio.h> #include <signal.h> int main(){ while (1) { printf(" le processus boucle \n"); } } 1. Donner le résultat d’exécution de ce programme. 2. Que se passe-t-il si on appuie sur Ctrl-C ? 3. Quel signal sera envoyé au processus lorsqu’on appuie sur Ctrl-C ? 4. Modifier le programme afin que lorsqu’on appuie sur Ctrl-C, le processus affiche le message « Arrêt dans 10 secondes », se bloque pendant 10 secondes ensuite il se termine. Exercice 5 : Ecrire un programme qui masque les signaux «SIGINT » et « SIGQUIT » pendant 30 secondes et ensuit les rétablit. Pour connaitre les combinaisons des touches taper la commande « %stty -a ». Exercice 6 : Ecrire un programme qui effectue un ping-pong des signaux entre un processus et son fils. Le signal « SIGUSR1 » est envoyé par le fils au père et « SIGUSR2 » est envoyé du père au fils. Le premier signal est envoyé par le père. Dans un premier temps on suppose que le nombre de signaux est égal à 2, ensuite on récupère le nombre de signaux sur la ligne de commande. 3 Correction TD/TP: Série Numéro 1 Exercice 1 : Considérons les programmes suivants : #include<unistd.h> main() { fork() && fork() ; } #include<unistd.h> main() { ( fork() || fork() ) ; } 1. Sans les exécuter, donner l’arbre de processus généré par l’exécution de chaque programme. 2. Implémenter et exécuter ces programmes pour comparer les résultats. #include<unistd.h> main() { fork() && fork() ; } Réponse : Arbre binaire : le père crée deux fils #include<unistd.h> main() { ( fork() || fork() ) ; } Réponse : Le père crée un fils qui à son tour crée un fils. #include<unistd.h> main( ) { fork(); fork(); fork(); } Réponse: Génération de 8 processus y compris le père Exercice2 : 1. Donnez l’arbre de processus généré par le programme suivant : #include<stdio.h> Réponse : #include<unistd.h> 4 main() { fork(); if (fork()) if (fork()); sleep(10) ; } 2. Donner l’arbre de processus généré par le programme suivant : #include<stdio.h> Réponse : #include<unistd.h> main() { fork(); if (fork()) if (fork()); fork(); sleep(10); } Exercice 3 : Ecrire un programme telle que l’arbre de processus généré par son exécution et un : - arbre binaire de profondeur 1 - arbre binaire de profondeur 2

Recently converted files (publicly available):