Skip to content

mello-sdn/Pipex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipex

Pipex Badge

📝 Résumé

pipex est un projet ou nous devons reproduire le comportement du pipe en shell. L'objectif est de comprendre et implémenter les mécanismes de communication entre processus en C, en recréant la fonctionnalité suivante :

< file1 cmd1 | cmd2 > file2

Objectifs principaux :

  • Comprendre le fonctionnement des pipes, fork, et redirections
  • Maîtriser la gestion des processus et leur communication
  • Gérer les file descriptors et leur duplication

🔧 Installation

Cloner le projet

git clone https://github.com/mello-sdn/Pipex.git
cd pipex

Compilation

make

💻 Utilisation

Programme pipex

# Exemple basique
./pipex infile "ls -l" "wc -l" outfile
# Équivaut à : < infile ls -l | wc -l > outfile

# Avec des commandes courantes
./pipex input.txt "grep Hello" "wc -w" output.txt

# Gestion d'erreurs
./pipex nonexistent.txt "cat" "wc -l" output.txt
# Gère le fichier inexistant et affiche l'erreur appropriée

📚 Points clés à retenir & ressources

Concepts Système

  • Pipes : Communication unidirectionnelle entre processus (fd[0] lecture, fd[1] écriture)
  • Fork : Création de processus enfants et gestion du parent
  • Exec : Remplacement du processus actuel par une nouvelle commande
  • Dup2 : Redirection des file descriptors (stdin, stdout)
  • Wait/Waitpid : Synchronisation des processus parent/enfant

Gestion d'Erreurs

  • Fichiers inexistants ou sans permissions
  • Commandes invalides ou introuvables dans PATH
  • Gestion des codes de retour (127 pour commande introuvable, 126 pour permission denied)
  • Fermeture appropriée de tous les file descriptors
  • Gestion des leaks mémoire et des processus zombies

Ressources


💡 Conseils

  • N'oubliez pas de fermer TOUS les file descriptors inutilisés
  • Utilisez valgrind pour traquer les leaks : valgrind --trace-children=yes ./pipex ...
  • Testez avec différents cas : fichiers inexistants, commandes invalides, permissions
  • Vérifiez que votre programme se comporte exactement comme celui du shell
  • Pensez à gérer la variable d'environnement PATH pour trouver les commandes et si PATH invalide bien free la mémoire alloué

✔️ Note Finale


125

About

42cursus Pipex

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors