pub fn unix_open_pipe(flags: i32) -> Result<(RawFd, RawFd), Error>
Expand description
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.
§fds
Array of two integers
§flags
Bitfield of file descriptor flags, as for fcntl()
§Returns
true
on success, false
if not (and errno will be set).
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.
§fds
Array of two integers
§flags
Bitfield of file descriptor flags, as for fcntl()