[fpc-pascal] What happened to FileOpen in trunk?

Michael Van Canneyt michael at freepascal.org
Wed Dec 27 18:40:05 CET 2017



On Wed, 27 Dec 2017, Giuliano Colla wrote:

> In multi-thread applications in Linux environment, I'm using FIFO's for 
> communicating between threads.
>
> In order to make it work properly, the FIFO must be opened in non 
> blocking mode. Up to fpc 3.0.4 I've been successfully using code like this:
>
> fdc := FileOpen(myFifo,fmOpenWrite or O_NONBLOCK);
>
> now in trunk the call returns forever an EAGAIN error (as if the 
> O_NOBLOCK flag was not forwarded to OS), and to make it work I'm forced 
> to use a call to fpOpen:
>
> fdc := fpOpen(myFifo,O_RDWR or O_NONBLOCK);
>
> which works properly.
>
> Is this an fpc new feature or a bug?

Your code was simply lucky to work in the beginning.

It's not guaranteed that passing OS-Specific options to FileOpen will work.

using fpOpen is the correct method, since you're using OS-specific features.

Michael.



More information about the fpc-pascal mailing list