LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Linux - Newbie (https://www.linuxquestions.org/questions/linux-newbie-8/)
-   -   What are socket and pipe files? (https://www.linuxquestions.org/questions/linux-newbie-8/what-are-socket-and-pipe-files-4175547999/)

skwilson78 07-14-2015 06:57 PM

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

berndbausch 07-14-2015 09:48 PM

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.

Sefyir 07-15-2015 09:54 AM

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:

Some systems provide the pathnames /dev/stdin, /dev/stdout, and /dev/stderr. These are equivalent to /dev/fd/0, /dev/fd/1, and /dev/fd/2.
Unless I'm mistaken, this can be very similar

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.

jpollard 07-15-2015 10:05 AM

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.

skwilson78 07-15-2015 12:09 PM

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

igadoter 07-15-2015 03:48 PM

Code:

[piotr@druid ~]$ mkfifo foo
[piotr@druid ~]$ cat > foo
ola
ola
ola

go to another terminal and do
Code:

[piotr@druid ~]$ cat foo
ola
ola
ola

some editors are able to open pipes, as common files and read from them. I was using this in kwrite in KDE 3.5.12.


All times are GMT -5. The time now is 03:49 PM.