/*
Optimisation TD5 Systeme, EX1
©2003 http://www.Software-DS.com
ex1
-p ou ex1 -l*/
#include
<sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char ** argv){
/* argc : nb de mots argv : tableau de mots */
int i=0;
char choix;
pid_t pid,pid2;
choix=argv[1][1];
if
(argc>=2) {
switch(choix)
{
case 'p': /* PROFONDEUR */
printf("PROFONDEUR\n\n");
sleep(1);
pid=fork();
switch(pid)
{
case
0: puts(" je suis le fils");
printf(" processus %d fils de %d\n\n",getpid(),getpid());
i++;
printf(" valeur : %d adresse : %d\n",i,&i);
pid=fork();
switch(pid)
{
case
0: puts(" je suis le fils");
printf(" processus %d fils de %d\n\n",getpid(),getpid());
printf(" valeur : %d\n",i);
sleep(3);
exit(0);
case
-1: perror(" demofork\n");
return(1);
default: puts(" je suis le pere");
printf(" le pere %d a cree le fils: %d\n\n",getpid(),pid);
printf(" valeur : %d\n",i);
sleep(3);
}
sleep(3);
exit(0);
break;
case
-1: perror(" demofork\n");
return(1);
default: puts(" je suis le pere");
i--;
printf(" le pere %d a cree le fils: %d\n\n",getpid(),pid);
printf(" valeur : %d adresse: %d\n",i,&i);
sleep(3);
}
printf(" VARIABLE i: %d\n",i);
break;
case 'l': /* LARGEUR */
sleep(1);
pid=fork();
switch(pid) {
case 0: puts("je suis le fils 1");
printf("processus %d fils de %d\n\n",getpid(),getpid());
i++;
printf("valeur : %d adresse : %d\n",i,&i);
pid=fork();
break;
case -1:perror("demofork\n");
return(1);
default: puts("je suis le pere");
i--;
printf("le pere %d a cree le fils: %d\n\n",getpid(),pid);
printf("valeur : %d adresse: %d\n",i,&i);
sleep(1);
pid2=fork();
switch(pid2) {
case 0: puts("je suis le fils 2");
printf("processus %d fils de %d\n\n",getpid(),getpid());
i++;
printf("valeur : %d adresse : %d\n",i,&i);
pid=fork();
break;
case -1: perror("demofork\n");
return(1);
default: puts("je suis le pere");
i--;
printf("le pere %d a cree le fils: %d\n\n",getpid(),pid);
printf("valeur : %d adresse: %d\n",i,&i);
sleep(3);
}
break;
}
break;
default
: printf("ERROR: %s",argv[0]);
}
sleep(6);
printf("FIN\n");
}
return(0);
}
/*
©2003 All Rights Reserved to www.Software-DS.com
*/
|