int pipe(int pipefd[2], int flags);
This syscalls creates a pipe with the passed flags and returns the registered
file descriptors in pipefd. Index 0 is the reader end, 1
is the writing one.
The only available flag for use is O_NONBLOCK.
The syscall returns 0 on success and -1 on failure, with the
following errno:
EFAULT: pipefd points to bogus memory.
EMFILE: No available file descriptor slots.