1.8 KiB
1.8 KiB
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
git clone <repository-url>
cd pipex
make
./pipex file1 "cmd1" "cmd2" file2
Exemple d'utilisation
# É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
- Fork du processus principal
- Processus fils 1 :
- Redirection stdin vers file1
- Redirection stdout vers pipe
- Execution cmd1
- Processus fils 2 :
- Redirection stdin depuis pipe
- Redirection stdout vers file2
- Execution cmd2
- Wait des processus fils
Bonus : here_doc
Support de << (here document) comme 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