[comp.unix.internals] Named pipes or UNIX domain sockets?

sean@ms.uky.edu (Sean Casey) (06/16/91)

Okay so I'm writing an application where two dissimilar processes need
to shove pieces of data at each other in a non-blocking fashion.
Process A talks to processes B, C, and D in a star fashion. Any of
these processes can be restarted if necessary.

I could do one of the following:

- FIFOs, which are likely to be the most efficient implementation, but
  which might be less portable than sockets. But there's POSIX...

- UNIX domain sockets, which are (IMHO) a little funkier to set up.
  But I'm comfy with sockets so that's no real trouble.

One thing I noticed is that when a program opens a named pipe, and
there's nothing else that has it open, then it just blocks
indefinitely, while a UNIX domain socket will get the connection
refused if there's nothing to listen.

Anyone care to share experiences with the relative merits of the two?

Sean
-- 
** Sean Casey  <sean@s.ms.uky.edu>

kiick@b11.ingr.com (chris kiick) (06/17/91)

sean@ms.uky.edu (Sean Casey) writes:

>Okay so I'm writing an application where two dissimilar processes need
...
>- FIFOs, which are likely to be the most efficient implementation, but
>  which might be less portable than sockets. But there's POSIX...

>- UNIX domain sockets, which are (IMHO) a little funkier to set up.
>  But I'm comfy with sockets so that's no real trouble.

>One thing I noticed is that when a program opens a named pipe, and
>there's nothing else that has it open, then it just blocks
>indefinitely, while a UNIX domain socket will get the connection
>refused if there's nothing to listen.
You can open a FIFO with the N_DELAY flag set, and it will return an
error code if there isn't anything on the other end.
I myself am more comfortable with FIFO's, because they act more like 
regular files, but that's just my experience.
>Anyone care to share experiences with the relative merits of the two?

>Sean
>-- 
>** Sean Casey  <sean@s.ms.uky.edu>
***********************************************************
      Chris J. Kiick       | work phone: (205) 730-6171
   Programmer at Large     | Email: ingr!b11!flinx!kiick
 "Ideas for sale, Cheap!"  | 
 
***********************************************************