pipex/README.md

1.8 KiB

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

git clone <repository-url>
cd pipex
make
./pipex file1 "cmd1" "cmd2" file2

Exemple d'utilisation

# É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 :

./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