title: read not blocking on named pipe
body: <p>i have the following bit of C code which reads from a pipe and then should block but it never blocks</p>
  
  <pre><code>int pipe_fd;
  int res;
  int open_mode = O_RDONLY;
  char buf[100];
  int bytes_read = 0;
  
  memset (buf, '\0', sizeof(buf));
  pipe_fd = open(FIFO_NAME, open_mode);
  
  if (access(FIFO_NAME, F_OK) == -1)
  {
      res = mkfifo(FIFO_NAME, 0777);
      if (res != 0)
      {
              fprintf (stderr, "Could not create fifo %s\n", FIFO_NAME);  
              exit (EXIT_FAILURE);
      }
  }
  
  for(;;)
  {        
      do     
      {     
          res = read(pipe_fd, buf, sizeof(buf));
          bytes_read += res;
      }while (res &gt; 0);
  
      // process data then go back and block
      ............
  }
  </code></pre>
  
  <p>It is sent a simple buffer by some code in a bash script like this './test 1'</p>
  
  <pre><code>#!/bin/bash
  
  pipe=/tmp/pipe
  
  if [[ ! -p $pipe ]]; then
      echo "Reader not running"
      exit 1
  fi
  
  if [[ "$1" ]]; then
       echo "some string" &gt;$pipe
  else
       echo "q" &gt;$pipe
  fi
  </code></pre>
  
  <p>I run the C code program in gdb and initially it does block on the read but as soon as i call the bash script the C code no longer blocks , it does successfully read the data from
  the buffer and then each time it reads there are 0 bytes read so not sure why its no longer blocking. The 'some string' data is correctly received at the other side.</p>
  
  <p>I just need it to sit there waiting for data process it and then go back and wait for more  </p>