On Thu, 12 Dec 2002, [UTF-8] Branko Čibej wrote:
> [EMAIL PROTECTED] wrote: > > >I've done more research. Wow, this is ugly. Basically, Windows doesn't > >allow you to open anonymous pipes in a non-blocking mode. That means that > >it is impossible to timeout a pipe read/write. Now for the good news. > >There are two possible solutions. > > > >1) Switch to using named pipes for platforms that support them. This has > >the advantage that we can open the pipe in overlapped mode, but it won't > >work on older versions of Windows (9x, ME specifically). This also means > >that APR itself will have a need to get a temporary filename, because we > >will need to have a name for the named pipe, but we can essentially forget > >the name of the pipe immediately. > > > On NT-class systems (NT, 2000, XP), anonymous pipes are implemented on > top of named pipes, using a unique pipe name. So there'd really be no > difference if APR used this approach. I actually knew that, but there is one difference. When opening a named pipe, you can pass in the overlapped flag, which you can't do when opening an anonymous pipe. :-( > DOS-based Windows don't support named pipes, of course. Maybe it would > be acceptable to return APR_ENOTIMPL if someone tried to open a > non-blocking pipe on Win9x? I could accept that. BTW, I did more research still, and for apr_proc_create, we use named pipes, so those can be non-blocking. That essentially means that we have the ability to do something inside APR that we aren't exposing to our users. Ryan
