pipex/README.md

71 lines
1.8 KiB
Markdown

# 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 <repository-url>
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