# pipex ## Description pipex est un projet de l'École 42 qui reproduit le comportement des pipes Unix. Il permet d'exécuter des commandes en pipeline comme dans un shell, en gérant l'entrée/sortie et les processus fils. ## Objectif Reproduire la commande shell : `< file1 cmd1 | cmd2 > file2` ## Fonctionnalités - **Execution de pipelines** avec 2 commandes - **Redirection d'entrée** depuis un fichier - **Redirection de sortie** vers un fichier - **Gestion des processus** avec fork/exec - **Communication** via pipes - **Gestion d'erreurs** robuste ## Technologies utilisées - **Langage** : C - **Processus** : fork, execve, wait - **I/O** : pipe, dup2, open, close - **Parsing** : Analyse des commandes et arguments ## Installation ```bash git clone cd pipex make ./pipex file1 "cmd1" "cmd2" file2 ``` ## Exemple d'utilisation ```bash # Équivalent à : < infile grep hello | wc -l > outfile ./pipex infile "grep hello" "wc -l" outfile # Équivalent à : < input.txt cat | head -5 > output.txt ./pipex input.txt "cat" "head -5" output.txt ``` ## Algorithme 1. **Fork** du processus principal 2. **Processus fils 1** : - Redirection stdin vers file1 - Redirection stdout vers pipe - Execution cmd1 3. **Processus fils 2** : - Redirection stdin depuis pipe - Redirection stdout vers file2 - Execution cmd2 4. **Wait** des processus fils ## Bonus : here_doc Support de `<<` (here document) comme bash : ```bash ./pipex here_doc LIMITER "cmd1" "cmd2" file ``` ## Gestion d'erreurs - Fichiers inexistants ou permissions - Commandes introuvables - Échec des appels système - Arguments invalides ## Compétences développées - Programmation système Unix - Gestion des processus et IPC - Redirections d'entrée/sortie - Pipes et communication inter-processus ## Auteur Alexandre Pommier (apommier) - École 42