Vous êtes sur la page 1sur 8

TP 6

Elaboré par :(Rabhi anas , krez nidhal, kassentini adem)


EX1
Ce code affiche :

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()){

for(int j=0;j<10;j++)printf("mon pid est %d avec lordre %d\n",getpid(),i);puts("\n");exit(0);}

else wait(0);

}
mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100610 avec lordre 0

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100611 avec lordre 1

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2


mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100612 avec lordre 2

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100613 avec lordre 3

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100614 avec lordre 4

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5


mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100615 avec lordre 5

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100616 avec lordre 6

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7

mon pid est 100617 avec lordre 7


mon pid est 100617 avec lordre 7

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100618 avec lordre 8

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

mon pid est 100619 avec lordre 9

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>

void rec(int a){wait(0);

if(!a) exit(0);

if(!fork()){printf("my id is %d and my parent is%d\n",getpid(),getppid());rec(a-1);}wait(0);

int main(int argc,char *argv[]) {

int n=atoi(argv[1]);rec(n);
}

my id is 105130 and my parent is105129

my id is 105131 and my parent is105130

my id is 105132 and my parent is105131

EX4
#include <stdio.h>

#include <unistd.h>

#include <sys/wait.h>

#include <stdlib.h>

int main(int argc,char *argv[]) {

int n=atoi(argv[1]);

wait(0);

for(int i=0;i<n;i++){

if(!fork()){

printf("my id is %d and my parent is %d\n",getpid(),getppid());exit(0);

}else wait(0);}

wait(0);

my id is 107374 and my parent is 107373

my id is 107375 and my parent is 107373

my id is 107376 and my parent is 107373

EX6

#include <stdio.h>

#include <unistd.h>

#include <sys/wait.h>
#include <stdlib.h>

int main(int argc,char *argv[]) {

int s;

wait(0);

for(int i=0;i<5;i++){wait(0);

if(!fork()){

printf("my id is %d : im executing mkdir %d \n",getpid(),i);

char cmd[8]="mkdir ";

cmd[6]=(char)(i+48);

cmd[7]='\0';

s=system(cmd); exit(0);

}else wait(0);

if(!WEXITSTATUS(s))printf("command number %d executed successfully\n",i);

else{printf("command number %d failed the program will exit\n",i);break;}

wait(0);

my id is 107861 : im executing mkdir 0

command number 0 executed successfully

my id is 107864 : im executing mkdir 1

command number 1 executed successfully

my id is 107867 : im executing mkdir 2

command number 2 executed successfully

my id is 107870 : im executing mkdir 3

command number 3 executed successfully

my id is 107873 : im executing mkdir 4

command number 4 executed successfully

Vous aimerez peut-être aussi