Projets

Minishell

Dev
UNIX
C

Projet 42 qui consiste à recréer un shell UNIX minimaliste en C.

My Minishell

Minishell

Ce projet est une réimplémentation simplifiée d’un interpréteur de commandes UNIX, entièrement codé en C dans le cadre du cursus 42. Le projet reproduit le fonctionnement de base d’un shell traditionnel en traitant des commandes entrées par l’utilisateur, leur exécution ainsi que la gestion d’un environnement simplifié (variables, redirections, signaux).

Le parsing joue un rôle crucial : il décompose l’entrée utilisateur en commandes distinctes et gère finement les cas particuliers tels que les quotes simples et doubles, les variables d’environnement, ainsi que les différentes formes de redirections. Une attention particulière a été portée à la gestion des signaux (comme CTRL+C et CTRL+D), afin d’offrir une expérience utilisateur aussi fidèle que possible à celle d’un shell traditionnel.

La gestion des pipes a également été un aspect intéressant : la capacité d’exécuter plusieurs commandes en parallèle, chacune passant son résultat à la suivante via des tuyaux interprocessus, en exploitant efficacement les fonctions système comme fork(), execve(), dup2(), et pipe().


Points clés du projet

  • Parsing avancé : gestion rigoureuse des quotes, des variables d’environnement et des redirections.
  • Exécution en parallèle : implémentation de pipelines robustes grâce à la gestion précise des processus et des descripteurs de fichier.
  • Gestion complète des signaux : gestion efficace de CTRL+C et CTRL+D pour garantir une stabilité optimale.
  • Mémoire et performance : utilisation rigoureuse de Valgrind pour assurer une gestion mémoire propre et éviter toute fuite.