system/FileDescriptor: implement CreatePipe() on Windows

This commit is contained in:
Max Kellermann 2017-08-11 08:15:47 +02:00
parent 5a495cc165
commit 7484bc31b4
2 changed files with 8 additions and 0 deletions

View File

@ -99,6 +99,8 @@ FileDescriptor::OpenNonBlocking(const char *pathname) noexcept
return Open(pathname, O_RDWR | O_NONBLOCK);
}
#endif
bool
FileDescriptor::CreatePipe(FileDescriptor &r, FileDescriptor &w) noexcept
{
@ -107,6 +109,8 @@ FileDescriptor::CreatePipe(FileDescriptor &r, FileDescriptor &w) noexcept
#ifdef HAVE_PIPE2
const int flags = O_CLOEXEC;
const int result = pipe2(fds, flags);
#elif defined(_WIN32)
const int result = _pipe(fds, 512, _O_BINARY);
#else
const int result = pipe(fds);
#endif
@ -119,6 +123,8 @@ FileDescriptor::CreatePipe(FileDescriptor &r, FileDescriptor &w) noexcept
return true;
}
#ifndef _WIN32
void
FileDescriptor::SetNonBlocking() noexcept
{

View File

@ -110,9 +110,11 @@ public:
#ifndef WIN32
bool OpenNonBlocking(const char *pathname) noexcept;
#endif
static bool CreatePipe(FileDescriptor &r, FileDescriptor &w) noexcept;
#ifndef _WIN32
/**
* Enable non-blocking mode on this file descriptor.
*/