What are socket and pipe files?
I am studying for the LPIC and I came across ls -F or file type and when it shows the indicator it mentions = as meaning socket and | as pipe. I know what a pipe is but does that mean there is such a thing as a pipe file?? Also what is a socket file or what does this mean if I am reading into it wrong? Probably a dumb question but it would be great if someone could fill me in. Thanks
|
Both are inter-process communication facilities. Sockets, also known as UNIX sockets, have the same programming interface and behaviour as network sockets, whereas named pipes, also known as FIFOs, behave like unnamed pipes.
The socket interface is described in the unix manual page (man 7 unix). Named pipes in man 7 fifo. |
Basic unix philosophy is everything is a file
So yes, there is a pipe file. This link helps explain http://www.informit.com/articles/art...9706&seqNum=15 Quote:
command1 | command2 | command3 command1 output to stdout, command2 takes command1's stdout as its stdin, processes it and sends the output to stdout, command3 takes command2's stdout as its stdin, processes it and sends it out to stdout, which is then interpreted by /dev/tty (the current terminal process) and displays it on screen. |
The primary difference is that a socket is designed to provide a bidirectional data transfer without deadlocking... You can still deadlock, but the fault is then within the application.
A fifo/pipe will fill to its buffer, then block until something reads from it. It is a one way transfer. You can also use a socket as if it were a pipe - but you cannot treat a pipe as a socket. |
Thaks
Thank you this helped. Here is a link that I found when researching your replys. It explains sockets and how unix uses file descripters for everything. I am posting it to help someone in the future. http://beej.us/guide/bgnet/output/ht...ge/theory.html
|
Code:
[piotr@druid ~]$ mkfifo foo Code:
[piotr@druid ~]$ cat foo |
All times are GMT -5. The time now is 03:49 PM. |