What is difference between named pipes and unnamed pipes?

Unnamed pipe:

  1. These are created by the shell automatically.

  2. They exists in the kernel.

  3. They can not be accesses by any process, including the process that creates it.

  4. They are opened at the time of creation only.

  5. They are unidirectional.

Named Pipe:( also called FIFO, First In FIrst Out)

  1. They are created programatically using the command mkfifo.

  2. They exists in the file system with a given file name.

  3. They can be viewed and accessed by any two un-related processes. ls cmd shows ā€œpā€ in the permission bits for a named pipe.

  4. They are not opened while creation.

  5. They are Bi-directinoal.

  6. A process writing a named pipe blocks until there is a process that reads that data.

  7. Broken pipe error occurs when the writing process closes the named pipe while another reading process reads it