Function
GLibunix_open_pipe
since: 2.30
Declaration [src]
gboolean
g_unix_open_pipe (
gint* fds,
gint flags,
GError** error
)
Description [src]
Similar to the UNIX pipe()
call, but on modern systems like Linux
uses the pipe2()
system call, which atomically creates a pipe with
the configured flags.
As of GLib 2.78, the supported flags are O_CLOEXEC
/FD_CLOEXEC
(see below)
and O_NONBLOCK
. Prior to GLib 2.78, only FD_CLOEXEC
was supported — if
you wanted to configure O_NONBLOCK
then that had to be done separately with
fcntl()
.
Since GLib 2.80, the constants G_UNIX_PIPE_END_READ
and
G_UNIX_PIPE_END_WRITE
can be used as mnemonic indexes in fds
.
It is a programmer error to call this function with unsupported flags, and a critical warning will be raised.
As of GLib 2.78, it is preferred to pass O_CLOEXEC
in, rather than
FD_CLOEXEC
, as that matches the underlying pipe()
API more closely. Prior
to 2.78, only FD_CLOEXEC
was supported. Support for FD_CLOEXEC
may be
deprecated and removed in future.
Available since: 2.30
Parameters
fds
-
Type: An array of
gint
Array of two integers.
The array must have 2 elements. The data is owned by the caller of the function. flags
-
Type:
gint
Bitfield of file descriptor flags, as for fcntl().
error
-
Type:
GError **
The return location for a recoverable error.
The argument can be NULL
.If the return location is not NULL
, then you must initialize it to aNULL
GError*
.The argument will be left initialized to NULL
by the function if there are no errors.In case of error, the argument will be set to a newly allocated GError
; the caller will take ownership of the data, and be responsible for freeing it.