012025 · Programmation système
Reproduction d'un shell en C
Un interpréteur de commandes UNIX écrit from scratch.
CPOSIXGDBValgrindBashTcsh
01Contexte
Projet bas-niveau visant à reconstruire le comportement d'un shell POSIX (TCSH) à partir des appels systèmes.
02Fonctionnalités clés
Parser propre
Pipes multiples et redirections
Variables d'environnement et builtins
Gestion des signaux (SIGINT, SIGQUIT) sans corrompre la TTY
Historique et édition de ligne
Scripting (foreach, if, …)
03Défis & solutions
Problème
Synchronisation correcte des pipes en chaîne avec fermeture des fd parents.
Solution
Fermeture systématique de chaque fd après dup2, et tests reproductibles couvrant chaque combinaison.
Problème
Quotes imbriquées et expansions de variables dans le parser.
Solution
Séparation tokenisation / expansion, avec table de transitions auditable et tests unitaires ciblés.
04Apprentissages
- Cycle fork / exec / wait maîtrisé
- Gestion fine des descripteurs de fichiers
- Analyse lexicale et orchestration de processus