Académique Documents
Professionnel Documents
Culture Documents
n=1
je suis le père
je suis le fils
maintenant n = 1
maintenant n = 2
Explication :
le code execute le processus père a valuer n=1 et ajoute a n 1 donc n=2 apres la creaction du
processus fils , lorsquil accede a ce processus le père attend jusqua la fin de lexecutuion du fils avec
wait(), le processus fils est dormant pendant 5 secondes (sleep(5)) apres ca le processus fils affiche
son variable locale n qui est 1 et lorsque tout est fini on retourne au processus père qui avait déjà
n=2 et laffiche
EX2
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main()
for(int i=0;i<10;i++){
if(!fork()){
else wait(0);
}
mon pid est 100610 avec lordre 0
EX3
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int main() {
int m[2][2]={{1,2},{3,4}},res[2][2],s;
for(int i =0;i<2;i++){
for(int j =0;j<2;j++){
if(!fork()){
return m[i][j]*m[i][j];
else{wait(&s);}
res[i][j]=WEXITSTATUS(s);
printf("%d\n",res[i][j]);
16
EX5
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
if(!a) exit(0);
int n=atoi(argv[1]);rec(n);
}
EX4
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int n=atoi(argv[1]);
wait(0);
for(int i=0;i<n;i++){
if(!fork()){
}else wait(0);}
wait(0);
EX6
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
int s;
wait(0);
for(int i=0;i<5;i++){wait(0);
if(!fork()){
cmd[6]=(char)(i+48);
cmd[7]='\0';
s=system(cmd); exit(0);
}else wait(0);
wait(0);