title: Using UNIX pipes for process synchronization-starvation
body: <p>Can we, by using UNIX pipes for process synchronization, be led into starvation?
  For example:</p>
  
  <pre><code>void pipesem_wait(struct pipesem *sem)
  {
      char onebyte = 'A';
      if ( read( sem-&gt;rfd, &amp;onebyte, sizeof( onebyte ) ) != sizeof( onebyte ) ) {
          perror( "read from pipe" );
          exit( 1 );
      }
  }
  </code></pre>
  
  <p>This is how we read from the pipe..
  When multiple processes want to read from this pipe, is it sure that all the requests will be handled in a particular (e.g. FIFO) order, or even it may never happen there is still a possibility of starvation?</p>