Les processus

Exercice 1
Consulter les pages de manuel des commandes ps et top. Quelle est l'option de ps permettant d'afficher tous les processus s'exécutant sur la machine ? d'afficher tous les informations sur les processus ? Comment interprète-t-on l'affichage de top ? Lancer la commande yes > /dev/null en arrière-plan. Utiliser ps pour voir le pid du processus. Utiliser kill pour terminer le processus. Assurez-vous que le processus est bien terminé à l'aide de ps.

Exercice 2

Analyser et commenter le programme suivant. Compiler et exécuter. Observer l'ordre d'affichage des nombres. Expliquer. Exécuter plusieurs fois. L'ordre d'affichage est-il toujours le même ? Pourquoi ? Synchroniser les processus de façon que l'ordre d'affichage soit 1 2...100. #include #include #include double f(void) { double j, s = 0.0; for (j = 1; j < 100000; j++) s += exp(1.0 / j); return s; } int main(void) { int pid, i, j, s; pid = fork();

. i <= 100. i=1.h> #include <unistd. i <= 50. i). } return 0. Exécuter et observer le contenu du fichier toto. i). exit(1).h> #include <sys/stat.h> #include <fcntl. Exercice 4 Analyser et commenter le programme p2.h> int main(void) { int fd. i++) { printf("%d\n".10. } if (pid == 0) for (i = 1. } Exercice 3 Ecrire un programme qui crée 10 fils. f().c. Le fils i affiche les nombres de 10(i-1) + 1 à 10i. Observer et expliquer le résultat. i++) { printf("%d\n". } if (pid) . } else for (i = 51. #include <sys/types.. exit(1).if (pid == -1) { perror("fork"). 0644). exit(1).. pid. } pid = fork(). fd = creat("toto". f().. if (fd == -1) { perror("creat"). Permuter la création du fichier et la création du fils. if (pid == -1) { perror("fork").

5). return 0. "fils\n". "pere\n". } Exercice 5 Ecrire un programme qui crée 2 fils. Les fils exécutent les commandes test 1 -eq 1 et test 1 -eq 2. } else { write(fd. 5). Le père récupère et affiche le code de retour de chaque fils.{ wait(NULL). . } close(fd). write(fd.

Sign up to vote on this title
UsefulNot useful