title: How do I perform a non-blocking fopen on a named pipe (mkfifo)?
body: <p>If I have a program which creates and attempts to open a named pipe using mkfifo, how can I open a pipe for reading or writing without blocking?</p>
  
  <p>Specifically, I'm writing a C program which can be run with or without a gui (written in Java).</p>
  
  <p>In the C program, I successfully create the named pipes using mkfifo, however when I do</p>
  
  <pre><code>FILE* in = fopen(PIPE_IN, "r"); /* Where PIPE_IN is the filename*/
  </code></pre>
  
  <p>fopen doesn't return until the GUI opens that pipe for writing. What I wish to do is have that pipe ready to be read once (if) the GUI decides to write to it - I'll be putting the file descriptor in a select() call. It's reasonable to expect that the java GUI may never actually be started, so I cannot rely on it to open the other end of the pipe at any specific point or even at all.</p>
  
  <p>I will also have a second pipe open for writing, and I assume I will have the same problem. Further, I can't set O_NONBLOCK on an output pipe that has no reader.</p>
  
  <p>Any suggestions?</p>
  
  <p>(This is running on a linux system)</p>