ENSI 2012/2013 S.E & Prog Concurrente

Programming, Processes, System Calls · exam

Voir tous les documents en programmation

ENSI 2012/2013

S.E & Prog Concurrente

Exercice 1 [gestion des processus]

Se familiariser avec les différentes options de la commande ps en lisant

man ps.

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 /

#include <sys/types.h>

#include <unistd.h>

Publicité

#include <stdio.h>

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);

Publicité

printf("fils attente finie\n");

break;

default:

sleep(attente_pere);

printf("pere attente finie\n");

break;

}

return 0 ;

}

M.Nasri

Page 1

ENSI 2012/2013

S.E & Prog Concurrente

Exercice 2 [ Comportement de exec ]

Publicité

1. Faites exec ps. Que se passe-t-il ? Donnez une explication.

2. Vérifiez votre explication en étudiant la commande shell exec sh.

(Quel est le pid de ce shell ?)

Exercice 3 [Path et variables d’environnement]

1. Créez dans progs un programme affichez qui affiche une chaîne de

caractères passée en argument.

2. Placez vous dans tp3 et tapez affichez salut. Que se passe-t-il ?

3. Comment faire pour que cette commande exécute le programme

affichez ?

Pour vous aidez, demandez-vous :

Que donne la commande shell which ls ?

Que donne la commande shell echo $PATH ?

Exercice 4 [fonction execl ]

Ecrire un programme prog1 qui crée un processus fils qui exécute

Publicité

affichez avec l’argument salut. On utilisera la fonction execl.

M.Nasri

Page 2

ENSI 2012/2013

S.E & Prog Concurrente

Exercice 5 [Fonction wait]

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.

M.Nasri

Page 3