3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS system libraries
5 * FILE: lib/msvcrt/io/pipe.c
6 * PURPOSE: Creates a pipe
7 * PROGRAMER: DJ Delorie
9 * 28/12/98: Appropriated for Reactos
15 #include <internal/file.h>
18 #include <internal/debug.h>
24 int _pipe(int _fildes
[2], unsigned int size
, int mode
)
26 HANDLE hReadPipe
, hWritePipe
;
27 SECURITY_ATTRIBUTES sa
= {sizeof(SECURITY_ATTRIBUTES
), NULL
, TRUE
};
29 TRACE("_pipe((%i,%i), %ui, %i)", _fildes
[0], _fildes
[1], size
, mode
);
31 if (mode
& O_NOINHERIT
)
32 sa
.bInheritHandle
= FALSE
;
34 if (!CreatePipe(&hReadPipe
,&hWritePipe
,&sa
,size
)) {
35 _dosmaperr(GetLastError());
39 if ((_fildes
[0] = alloc_fd(hReadPipe
, split_oflags(mode
))) < 0)
41 CloseHandle(hReadPipe
);
42 CloseHandle(hWritePipe
);
47 if ((_fildes
[1] = alloc_fd(hWritePipe
, split_oflags(mode
))) < 0)
50 CloseHandle(hReadPipe
);
51 CloseHandle(hWritePipe
);