-#ifdef WIN32
- DWORD ret;
- if(!WriteFile(handle[1], buf, size, &ret, 0))
- throw SystemError("Writing to pipe failed", GetLastError());
-#else
- int ret = ::write(handle[1], buf, size);
- if(ret==-1)
- {
- if(errno==EAGAIN)
- return 0;
- else
- throw SystemError("Writing to pipe failed", errno);
- }
-#endif
-
- return ret;