That certainly doesn't *sound* correct.  It *sounds* like a bug to me.

     POLLIN      Data other than high priority data may  be  read
                 without  blocking. For STREAMS, this flag is set
                 in revents  even  if  the  message  is  of  zero
                 length.

The description above doesn't indicate anything about whether the data 
had previously been signaled or not.

That said, it does seem strange that you would read less than the full 
amount of data available in the FIFO at any given time.

    -- Garrett

Roland Mainz wrote:
> Hi!
>
> ----
>
> I'm currently writing a small application which should use |poll()| on
> multiple FIFOs (created via /usr/bin/mkfifo) - after some testing I hit
> a weired behaviour: The FIFOs are fed from other processes (one FIFO per
> process) which never terminate (e.g. |POLLHUP| not involved) and only
> write data from time to time into the FIFOs and the consumer application
> uses |poll()| to wait for incoming data. It seems that if the consumer
> only reads some data from a FIFO file descriptor and not all queued data
> then the |revent| field for this pollfd entry will return |0| on the
> following |poll()| call (even if there are still data queued).
> Is this the correct behaviour ?
>
> ----
>
> Bye,
> Roland
>
>   

_______________________________________________
opensolaris-code mailing list
[email protected]
http://mail.opensolaris.org/mailman/listinfo/opensolaris-code

Reply via email to