Skip to content

This project will let you discover in detail a UNIX mechanism that you already know by using it in your program.

Notifications You must be signed in to change notification settings

KianRistori/Pipex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pipex

This project is about handling pipes.

Score

Mandatory Part

Program name pipex
Turn in files Makefile, *.h, *.c
Makefile NAME, all, clean, fclean, re
Arguments file1 cmd1 cmd2 file2
External functs. open, close, read, write, malloc, free, perror, strerror, access, dup, dup2, execve, exit, fork, pipe, unlink, wait, waitpid
ft_printf and any equivalent YOU coded
Libft authorized Yes
Description This project is about handling pipes.

Your program will be executed as follows:

./pipex file1 cmd1 cmd2 file2

It must take 4 arguments:

  • file1 and file2 are file names

  • cmd1 and cmd2 are shell commands with their parameters.

It must behave exactly the same as the shell command below:

$> < file1 cmd1 | cmd2 > file2

Examples

$> ./pipex infile "ls -l" "wc -l" outfile

Should behave like: < infile ls -l | wc -l > outfile

$> ./pipex infile "grep a1" "wc -w" outfile

Should behave like: < infile grep a1 | wc -w > outfile

Requirements

Your project must comply with the following rules:

  • You have to turn in a Makefile which will compile your source files. It must not relink.

  • • You have to handle errors thoroughly. In no way your program should quit unexpectedly (segmentation fault, bus error, double free, and so forth).

  • Your program mustn’t have memory leaks.

  • If you have any doubt, handle the errors like the shell command: < file1 cmd1 | cmd2 > file2

Bonus part

You will get extra points if you:

Handle multiple pipes.

This:

$> ./pipex file1 cmd1 cmd2 cmd3 ... cmdn file2

Should behave like:

< file1 cmd1 | cmd2 | cmd3 ... | cmdn > file2

Support « and » when the first parameter is "here_doc".

This:

$> ./pipex here_doc LIMITER cmd cmd1 file

Should behave like:

cmd << LIMITER | cmd1 >> file

About

This project will let you discover in detail a UNIX mechanism that you already know by using it in your program.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published