/*
Optimisation TD5 Systeme, EX3
©2003 http://www.Software-DS.com
*/
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
void fils1(){
execlp("./pair","pair",0);
}
void fils2(){
execlp("./impair","impair",0);
}
int main(void) {
int i;
pid_t pid1,pid2;
switch(pid1=fork()) {
case -1: perror("erreur fork");
exit(1);
case 0: fils1();
puts("fin fils1"); /* ne sera jamasi
affiché puisuqe le exec, va emepecher d'executer tout ce qui
suit puisque cela va etre effacé pour etre remplacé par
le contenu du programme remplacant (eexcpl) */
exit(0);
default:
switch(pid2=fork()) {
case -1: perror("erreur fork");
exit(1);
case 0: fils2();
puts("fin fils2");
exit(0);
default:
printf("pere= %d fils1= %d fils2 = %d",getpid(),pid1,pid2);
for(i=0;i<100;i++){
printf("%d\n",i);
}
waitpid(pid1,0,0);
waitpid(pid2,0,0);
/* le pere attend que les fils soient terminé
, ainsi on va voire s'afficher Fin du pere */
puts("Fin du pere\n");
}
}
return
0;
}
Pair:
#include
<stdio.h>
int main(void) {
int i=0;
while(i<100) {
printf("%d\n",i);
i+=2;
}
return 0;
}
Impair:
#include
<stdio.h>
int main(void) {
int i=1;
while(i<100) {
printf("%d\n",i);
i+=2;
}
return 0;
}
/*
©2003 All Rights Reserved to www.Software-DS.com
*/
|