diff --git a/Makefile b/Makefile
index e2864fcad25b318d398c2ae17366ec6f46de17ec..610c02e576bac2ff89454f982e7047483171d4f6 100644
--- a/Makefile
+++ b/Makefile
@@ -26,3 +26,5 @@ $(TEX): $(MD)
 
 clean:
 	rm -f *.pdf content/*.tex
+
+rebuild: clean all
diff --git a/content/04_signaux.md b/content/04_signaux.md
new file mode 100644
index 0000000000000000000000000000000000000000..ce52564bcf286a2281ef745acbac1913029b745d
--- /dev/null
+++ b/content/04_signaux.md
@@ -0,0 +1,80 @@
+---
+lang: fr
+---
+\newpage
+
+# Signaux POSIX
+
+Est un événement **asynchrone** (qui peut survenir à n'importe quel moment)
+
+## Pourquoi les signaux
+
+1. Noyau notifie un processus d'un événement exceptionnel
+    - accès mémoire invalide, division par zéro
+    - terminaison de processus, etc.
+2. Un processus notifie un autre processus
+    - forme de communication inter-processus (IPC)
+    - le noyau détermine si le processus est autorisé à envoyer un signal
+3. Un processus se notifie lui-même
+    - timer
+
+
+## Numéro et nom de signal
+
+Page du manuel des signaux POSIX
+
+```sh  
+man 7 signal
+```
+
+### Lister tous les signaux et les numéros
+
+```sh
+kill -l
+```
+
+## Action d'un signal
+
+Un processus recevant un signal est **interrompu pour exécuter l'action** associée
+au signal.
+
+
+## Signaux impossibles à intercepter
+
+- `SIGKILL`
+- `SIGSTP`
+
+
+## Envoyer un signal à un processus
+
+```C
+int kill(pid_t pid, int sig);
+```
+
+## États d'un signal
+
+Un signal peut être ignoré ou bloqué
+
+- ignoré $\rightarrow$ le signal est perdu
+- bloqué $\rightarrow$ le signal n'est pas reçu, il le sera seulement une fois
+débloqué
+
+
+## Signaux et processus
+
+Chaque processus possède :
+
+- Une table de pointeurs où chacun pointer sur un **handler de signal**
+
+
+## Signaux et `fork`
+
+- Les handlers de signaux définis dans le parent sont hérités par l'enfant
+- Les signaux bloqués dans le parent sont hérités par l'enfant
+- Dans l'enfant, la table des signaux pendants est initialisée à zéro
+- Lorsqu'un processus se termine, le signal `SIGCHLD` est **toujours envoyé
+au parent**
+
+Dans le cas d'un appel à une fonction `exec`, les handlers de signaux sont
+ré-initialisés aux handlers par défaut
+