forked from currentleak/247-616_Thread-Pipe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfork2.c
executable file
·57 lines (52 loc) · 1.18 KB
/
fork2.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
45
46
47
48
49
50
51
52
53
54
55
56
57
/**
* @file fork2.c
*
* @brief Exemple de code C pour des processus (thread) avec la fonction fork,
*
* @author Kevin Cotton
* @date 2024-08-02
*
*/
//#define _XOPEN_SOURCE 800
#define _GNU_SOURCE
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <sys/wait.h>
const char* processusPereOuFils;
/// @brief Code exécuté par le processus Père
/// @param aucun
void codeDuProcessusParent(void)
{
processusPereOuFils = "Processus Père";
sleep(1);
printf("Je suis %s\n", processusPereOuFils);
}
/// @brief Code exécuté par le processus Fils
/// @param aucun
void codeDuProcessusEnfant(void)
{
processusPereOuFils = "Processus Fils";
sleep(2);
printf("Je suis %s\n", processusPereOuFils);
}
/// @brief Exemple de processus Père/Fils avec la fonction 'fork'
/// @return 0
int main()
{
pid_t pid;
pid = fork();
if(pid == 0){
// Appel fonction Enfant
codeDuProcessusEnfant();
} else {
int status ;
waitpid(pid, &status, 0); //Attendre le processus enfant
if(WIFEXITED(status)) {
// Appel fonction Parent
codeDuProcessusParent();
}
}
return 0;
}