I have a producer application that writes data into a FIFO, and I have a consumer application that reads data from FIFO utilizing select() and read() functions inside of a while(true) loop.

After producer is done (it closes and unlinks FIFO) select() on the consumer side keeps endlessly returning "ready" state, and read() returns 0 bytes. I've expected select() to return -1 once the FIFO was closed but it's not the case.

How do I catch that FIFO was closed on the producer side?

Thank you.

P.S. I should post my code but it's a large application, it would take me time to make it into a small prototype. I'd appreciate if someone knows the answer without me having to post the code.