We have already used pipes in many earlier sessions. It is a tool for inter-process communication.
$ command_1 | command_2
In this case, the output of command_1
will be send as an input to command_2
. The limitation is that the communication is half duplex. This means the data can flow in only one direction. Normally for inter-process communication, you need to open files then get the file descriptor. This will be used to write to the pipe file. Again, we need to create a Fifo
file by special commands. The preceding technique simplifies all this process. We only need to insert "|
" in between the two processes. The operating system creates one intermediate buffer. This buffer is used for storing the data from one command and will be used again for the second command.
A simple example is as follows:
$ who | wc
The preceding simple command will be carrying out three different activities. First, it will copy the output of the who
command to the temporary file. Then the wc
command will read the temporary file and display the result. Finally, the temporary file will be deleted.
Normally, there will be two processes. The first command is the writer process. The second process is the reader process. The writer process will write to temp_file
and the reader will read from temp_file
. Examples of writer processes are ps
, ls
, and date
. Examples of reader processes are wc
, cat
, and sort
.