fork() = Je me copie moi-même pour faire deux choses en parallèle ! ✨
[Processus unique]
|
| fork()
⬇
┌─────┴─────┐
▼ ▼
[Processus] [Processus]
Parent Enfant
Exemple simple d’usage du fork
file : fork.c
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
int main()
{
pid_t pid = fork();
if (pid == -1)
{
perror("fork failed");
return EXIT_FAILURE;
}
if (pid == 0)
{
printf("Je suis le processus enfant\n");
}
else
{
printf("Je suis le processus parent\n");
}
return EXIT_SUCCESS;
}
un code amusant pour bien voir le Père et le Fils
Il faut 2 terminaux. Avec la commande tty, vérifiez que vous avez :
/dev/pts/1pour afficher le père/dev/pts/2pour afficher le fils
Ici, Luc Skywalker !
File : darkvador.c
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int tty;
printf ("Luc je suis ton père! \n");
/* Création du processus enfant */
if (fork() == 0)
{
/* ENFANT - écrit sur /dev/pts/2 */
tty = open("/dev/pts/2", O_WRONLY);
write(tty, "Je suis Luc SkyWalker !\n", 24);
close(tty);
}
else
{
/* PARENT - attend 3 secondes, puis écrit sur /dev/pts/1*/
sleep(3);
tty = open("/dev/pts/1", O_WRONLY);
write(tty, "C'est bien mon petit !\n", 23);
close(tty);
}
return EXIT_SUCCESS;
}


