| libft | ||
| main.c | ||
| Makefile | ||
| pipex.h | ||
| README.md | ||
| utils.c | ||
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