Systèmes d'exploitation – TD programme et processus, environnement d'exécution
Exercice N° 1 :
Le programme suivant permet d’illustrer le comportement du fork.
main () {
int code_retour ;
printf (“Debut du test fork ()\n”);
code_retour = fork ();
switch (code_retour ) {
case –1 :
printf (“Pbm lors de la creation du processus\n”);
break;
case 0 :
printf (“Je suis le processus fils \n”);
break;
default :
printf (“Je suis le processus père\n”);
printf (“Je viens de créer le processus fils dont le pid est %d \n”,code_retour);
break;
}
break;
printf (“code_retour %d\n”, code_retour);
printf (“Fin du test fork ()\n”);
}
Exécuter ce programme puis expliquer le résultat obtenu.
Exercice N°2 :
A l’aide de la procédure fork() et en utilisant les primitives getuid, getgid,… fournies en annexe,
écrire un programme qui crée un nouveau processus et qui affiche pour les deux processus (père et
fils) les caractéristiques générales d’un processus : • Identifiant du processus. • Identifiant du père
du processus. • Répertoire de travail du processus. • Le propriétaire réel. • Le propriétaire effectif. •
Le groupe propriétaire réel. • Le groupe propriétaire effectif. Avant d’afficher ces informations, on
prendra bien soin de préciser si l’on est dans le processus père ou fils. Exercice N°2
A l’aide de la procédure fork() et en utilisant les primitives getuid, getgid,… fournies en
annexe, écrire un programme qui crée un nouveau processus et qui affiche pour les deux
processus (père et fils) les caractéristiques générales d’un processus :
• Identifiant du processus.
• Identifiant du père du processus.
• Répertoire de travail du processus.
• Le propriétaire réel.
• Le propriétaire effectif.
• Le groupe propriétaire réel.
• Le groupe propriétaire effectif.
Avant d’afficher ces informations, on prendra bien soin de préciser si l’on est dans le
processus père ou fils.