diff --git a/README.md b/README.md new file mode 100644 index 0000000..ba2d1dc --- /dev/null +++ b/README.md @@ -0,0 +1,71 @@ +# 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 \ No newline at end of file