From 48bbc117a7bb09c4ab9328b1c4040e7a9cf171c0 Mon Sep 17 00:00:00 2001
From: iliya <iliya.saroukha@hes-so.ch>
Date: Thu, 5 Oct 2023 10:53:30 +0200
Subject: [PATCH] feat: vaut mieux suivre les slides

---
 Makefile              |  2 ++
 content/04_signaux.md | 80 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+)
 create mode 100644 content/04_signaux.md

diff --git a/Makefile b/Makefile
index e2864fc..610c02e 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 0000000..ce52564
--- /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
+
-- 
GitLab