Can someone post a simple example of using named pipes in Bash on Linux?
A FIFO, also known as a named pipe, is a special file similar to a pipe but with a name on the filesystem. Multiple processes can access this special file for reading and writing like any ordinary file. Thus, the name works only as a reference point for processes that need to use a name in the filesystem.
A pipe is a form of redirection (transfer of standard output to some other destination) that is used in Linux and other Unix-like operating systems to send the output of one command/program/process to another command/program/process for further processing.
What is a named pipe? On Unix-based operating system like Linux, a named pipe, or FIFO (first-in, first-out), is a “special” kind of file used to establish a connection between processes. Unlike a “standard” pipe, a named pipe is accessed as part of the filesystem, just like any other type of file.
One of the best examples of a practical use of a named pipe...
From http://en.wikipedia.org/wiki/Netcat:
Another useful behavior is using
netcat
as a proxy. Both ports and hosts can be redirected. Look at this example:nc -l 12345 | nc www.google.com 80
Port 12345 represents the request.
This starts a
nc
server on port 12345 and all the connections get redirected togoogle.com:80
. If a web browser makes a request tonc
, the request will be sent to google but the response will not be sent to the web browser. That is because pipes are unidirectional. This can be worked around with a named pipe to redirect the input and output.mkfifo backpipe nc -l 12345 0<backpipe | nc www.google.com 80 1>backpipe
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With