-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathf4.c
executable file
·44 lines (34 loc) · 1.21 KB
/
f4.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main(){
pid_t pid_fils1, pid_fils2;
int status;
pid_fils1 = fork();
if (pid_fils1 == 0){
// sleep(1);
printf("Ici le fils 1, mon pid est %ld, le pid de mon père est %ld\n", getpid(), getppid());
exit(111);
}
else{
pid_fils2 = fork();
if (pid_fils2 == 0){
// sleep(1);
printf("Ici le fils 2, mon pid est %ld, le pid de mon père est %ld\n", getpid(), getppid());
exit(222);
}
else{
// sleep(1);
printf("Ici le père, mon pid est %ld, les pid de mes fils sont %ld et %ld\n", getpid(), pid_fils1, pid_fils2);
printf("Ici le père, j'attends la fin de mes fils\n");
// L'ordre dans lequel on attend la fin des fils est interchangeable
printf("\nIci le père, j'attends la fin de mon premier fils.\n");
waitpid(pid_fils1, &status, 0);
printf("Mon premier fils viens de se terminer et m'a renvoyé %d\n\n", WEXITSTATUS(status));
printf("\nIci le père, j'attends la fin de mon deuxième fils.\n");
waitpid(pid_fils2, &status, 0);
printf("Mon deuxième fils viens de se terminer et m'a renvoyé %d\n\n", WEXITSTATUS(status));
}
}
return 0;
}