docs: add comprehensive README for Unix pipe and redirection recreation project
This commit is contained in:
parent
66ee225f56
commit
f5f3d5c094
71
README.md
Normal file
71
README.md
Normal file
@ -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 <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
|
||||||
Loading…
Reference in New Issue
Block a user