TD – Initiation à la Programmation système
Processus
Exercice 0
Ecrire un programme C qui affiche la liste des arguments de la ligne de commande qui lance
son exécution.
Exercice 1
Dessiner l’arbre généalogique engendré par l’exécution de chaque programme
Programme A #include<unistd.h>
main( ) {
fork();
fork();
fork();
}
Programme B #include<unistd.h>
main() {
(fork() && fork()) ;
}
Programme C #include<unistd.h>
main() {
( fork() || fork() ) ;
}
Programme D #include<unistd.h>
main() {
(fork()&&( fork() || fork() )) ;
}
Exercice 2
A l’aide de l'appel système fork() écrire un programme qui crée un nouveau processus.
Chaque processus affiche :
la filiation (père ou fils),
l'identifiant (pid),
l'identifiant de son père (ppid),
le propriétaire réel,
le propriétaire effectif,
le groupe propriétaire réel,
le groupe propriétaire effectif.
Le processus père doit attendre la fin du processus fils avant de se terminer.
Exercice 3
1) A l’aide des primitives fork et execl, écrire un programme qui permet de faire exécuter la
commande ps avec l’option –l depuis un processus fils. Ce dernier devra se mettre en
attente du code retour de la commande ps.
2) Reprendre le programme précédent mais en utilisant la primitive execv.
Exercice 4
En utilisant les primitives fork(), execv() et wait(), écrire un interpréteur de commandes
simplifié dont le fonctionnement sera similaire à un shell.