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