TP
Appels système
Exercice 1 :
1. Quel est le processus de pid 1 ?
2. Lancer le programme ci-dessous avec les arguments 10 20. Tapez ps -la dans un autre
terminal avant la fin du père, avant la fin du fils. Quels sont les ppid du père et du fils ?
Donnez une explication.
3. Lancer le programme ci-dessous avec les arguments 10 0. Tapez ps -la dans un autre
terminal avant la fin du père. Que constatez-vous ?
#include <unistd.h> /* necessaire pour les fonctions exec et fork */
#include<sys/types.h> /* necessaire pour la fonction fork */
#include <stdio.h> /* necessaire pour la fonction perror */
int main(int argc, char * argv[]) {
pid_t pid;
int attente_fils,attente_pere;
if(argc != 3) perror("usage: ex1 n m\n");
attente_pere = atoi(argv[1]);
attente_fils = atoi(argv[2]);
switch(pid=fork())
case -1:
perror("fork error");
break;
case 0:
sleep(attente_fils);
printf("fils attente finie\n");
break;
default:
sleep(attente_pere);
printf("pere attente finie\n");
break; } }
Exercice 2
Ecrire un programme qui crée 10 processus fils. Chacun d’entre eux devra afficher son
numéro d’ordre entre 0 et 10. Vérifier que votre programme affiche 100 caractères.
Exercice 3 : La fonction kill()
1. Ecrire un programme qui crée un processus fils qui affiche à chaque seconde le nombre
de secondes écoulées. Le processus père arrête le processus fils au bout de 10 secondes.
Exercice 4 : La fonction wait()
1. Ecrire un programme qui crée 2 processus l’un faisant la commande ls -l, l’autre ps -l. Le
père devra attendre la fin de ses deux fils et afficher quel a été le premier processus à
terminer.
Exercice 5 : La fonction execl()
1. Donnez le code source C d'un programme affichez.c qui affiche à l'écran la chaîne de
caractères qui lui est passée en paramètre en ligne de commande.
Exemple d'utilisation : affichez coucou
Compiler et tester ce programme.
2. Ecrire un programme prog1 qui crée un processus fils qui exécute affichez avec
l’argument salut. On utilisera la fonction execl.