71 lines
1.8 KiB
Markdown
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 |