Chapitre 2.10 - Communication Inter-Processus
Objectifs d'Apprentissage
À la fin de ce chapitre, vous serez capable de:
- Comprendre les mécanismes de communication inter-processus (IPC)
- Utiliser les signaux pour communiquer
- Comprendre les pipes et redirections
- Utiliser les sockets pour la communication réseau
Qu'est-ce que l'IPC?
IPC (Inter-Process Communication) désigne les mécanismes permettant aux processus de communiquer et synchroniser leurs actions.
Signaux
Les signaux sont des notifications asynchrones envoyées à un processus.
Signaux courants:
SIGTERM (15): Terminaison gracieuseSIGKILL (9): Terminaison forcée (ne peut pas être ignoré)SIGSTOP (19): SuspendreSIGCONT (18): ReprendreSIGHUP (1): Recharger configurationSIGINT (2): Interruption (Ctrl+C)
# Envoyer un signal
kill -SIGTERM PID
kill -15 PID
kill -9 PID # Force
# Voir les signaux disponibles
kill -l
# Ignorer un signal (dans un script)
trap '' SIGINT
Pipes
Les pipes permettent de rediriger la sortie d'un processus vers l'entrée d'un autre.
Pipes Anonymes
# Pipe simple
commande1 | commande2
# Exemple
ps aux | grep apache
cat fichier.txt | sort | uniq
Named Pipes (FIFO)
# Créer un named pipe
mkfifo mon_pipe
# Processus 1 écrit
echo "Hello" > mon_pipe
# Processus 2 lit
cat < mon_pipe
Redirections
Les redirections permettent de contrôler l'entrée/sortie:
# Redirection sortie
commande > fichier # Écraser
commande >> fichier # Ajouter
# Redirection erreur
commande 2> erreur.log
commande 2>&1 # Erreur vers sortie
# Redirection entrée
commande < fichier
# Here document
commande << EOF
ligne 1
ligne 2
EOF
Sockets
Les sockets permettent la communication réseau entre processus.
Sockets Unix (Local)
# Créer un socket Unix
nc -lU /tmp/mon_socket
# Se connecter
nc -U /tmp/mon_socket
Sockets TCP/IP (Réseau)
# Serveur
nc -l 8080
# Client
nc localhost 8080
Mémoire Partagée
La mémoire partagée permet à plusieurs processus d'accéder à la même zone mémoire.
Avantages:
- Communication rapide
- Pas de copie de données
- Efficace pour grandes quantités
Outils:
shmget,shmat(System V)/dev/shm(tmpfs)
Message Queues
Les message queues permettent l'envoi de messages structurés entre processus.
Caractéristiques:
- Messages typés
- File d'attente
- Persistance optionnelle
Commandes:
# Voir les message queues
ipcs -q
# Supprimer
ipcrm -q ID
Sémaphores
Les sémaphores permettent la synchronisation entre processus.
Usage:
- Contrôle d'accès à une ressource
- Éviter les conditions de course
- Coordination entre processus
Exemples Pratiques
Pipeline Complexe
# Trouver les 10 processus utilisant le plus de CPU
ps aux --sort=-%cpu | head -11 | tail -10
# Compter les lignes dans plusieurs fichiers
cat *.txt | wc -l
# Filtrer et formater
grep ERROR /var/log/app.log | awk '{print $1, $2}' | sort
Communication avec Signaux
# Script qui gère les signaux
#!/bin/bash
trap 'echo "Signal reçu, nettoyage..."; exit' SIGTERM SIGINT
while true; do
echo "Travail en cours..."
sleep 1
done
Résumé
Dans ce chapitre, vous avez appris:
IPC: Mécanismes de communication inter-processus
Signaux: Notifications asynchrones (SIGTERM, SIGKILL, etc.)
Pipes: Redirection sortie/entrée (|, >, <)
Sockets: Communication réseau (Unix, TCP/IP)
Mémoire Partagée: Accès mémoire commun
Message Queues: Messages structurés
Sémaphores: Synchronisation
Prochaines Étapes
Module 3: Système de Fichiers
Module 4: Gestion des Processus
Chapitre créé le: Décembre 2024