O pipex faz parte da grade da Escola 42 (Milestone 2).
O projeto consiste em reproduzir o comportamento do operador | (pipe) do shell, permitindo encadear a saída de um comando como entrada de outro, utilizando as chamadas de sistema em C.
Na prática o programa deve executar algo equivalente a:
< infile cmd1 | cmd2 > outfile
Utilizando o programa:
./pipex infile "cmd1" "cmd2" outfile
- Processos (fork)
- Comunicação entre processos (pipe)
- Redirecionamento de arquivos (dup2)
- Execução de comandos (execve)
- Manipulação de erros
- Variáveis de ambiente (PATH)
O programa recebe 4 argumentos:
./pipex infile cmd1 cmd2 outfile
- infile: arquivo de entrada.
- cmd1: primeiro comando a ser executado.
- cmd2: segundo comando a ser executado.
- outfile: arquivo de saída.
Fluxo:
- O conteúdo de infile é passado para cmd1
- A saída de cmd1 é redirecionada para cmd2 através de um pipe.
- A saída de cmd2 é escrita em outfile
pipex/
├── inc/
│ └── pipex.h
│ └── pipex_bonus.h
├── lib/
│ └── libft/
│ └── libft.a/
├── src/
│ ├── main_bonus.c
│ ├── main.c
│ ├── pipex_bonus.c
│ ├── pipex_utils_bonus.c/
│ ├── pipex_utils.c/
│ ├── pipex.c/
├── infile
├── Makefile
└── README.md
-
Para compilar o projeto, execute:
make ou make bonus -
Para limpar os arquivos objeto:
make clean -
Para remover tudo (obj e executável):
make fclean
Execução obrigatória
./pipex infile "ls -l" "wc -l" outfile
⭐ Bônus – múltiplos pipes
O programa também suporta múltiplos comandos encadeados, reproduzindo o comportamento do shell com vários pipes:
< infile cmd1 | cmd2 | cmd3 | ... | cmdn > outfile
Utilizando o pipex_bonus:
./pipex_bonus infile "cat" "grep que" "tr a-z A-Z" outfile
Ingrid Lemos Caetano Silva

