I have gone through a variaty of different linux named pipe client/server implementations but most of them use the blocking defaults on reads/writes.
As I am already
According to open(2) man page, you can pass O_RDONLY|O_NONBLOCK or O_WRONLY|O_NONBLOCK to avoid the open syscall to be blocked (you'll get errno == ENXIO in that case)
O_RDONLY|O_NONBLOCK
O_WRONLY|O_NONBLOCK
open
errno == ENXIO
As I commented read also the fifo(7) and mkfifo(3) man pages.