This project demonstates how pipes work in UNIX.
Conceptually, a pipe is a connection between two processes, such that the standard output from one process becomes the standard input of the other process. In UNIX Operating System, Pipes are useful for communication between related processes(inter-process communication)
- Clone this repo and go to the cloned directoty
$> git clone https://github.com/cvine21/pipex.git
$> cd pipex/
This part handles only a single pipe.
Create an executable file:
$> cd pipex && make
Program will be executed as follows:
$> ./pipex file1 cmd1 cmd2 file2
It must take 4 arguments:
- file1 and file2 are filenames.
- cmd1 and cmd2 are shell commands with their parameters.
It must behave exactly the same as the shell command below:
$> < file1 cmd1 | cmd2 > file2
For example:
$> ./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
Bonus part handles multiple pipes and supports « and » redirections and heredoc.
Create an executable file:
$> cd pipex_bonus && make
For example:
$> ./pipex file1 cmd1 cmd2 cmd3 ... cmdn file2
Should behave like: < file1 cmd1 | cmd2 | cmd3 ... | cmdn > file2
To use heredoc
the first parameter must be "here_doc":
$> ./pipex here_doc LIMITER cmd cmd1 file
Should behave like: cmd << LIMITER | cmd1 >> file