Retour aux projets
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