This wraps the close() call. In case of error, errno will be
preserved, but the error will also be stored as a #GError in error.
In case of success, errno is undefined.
Besides using #GError, there is another major reason to prefer this
function over the call provided by the system; on Unix, it will
attempt to correctly handle EINTR, which has platform-specific
semantics.
It is a bug to call this function with an invalid file descriptor.
On POSIX platforms since GLib 2.76, this function is async-signal safe
if (and only if) error is null and fd is a valid open file descriptor.
This makes it safe to call from a signal handler or a #GSpawnChildSetupFunc
under those conditions.
See `signal(7)` and
`signal-safety(7)` for more details.
This wraps the close() call. In case of error, errno will be preserved, but the error will also be stored as a #GError in error. In case of success, errno is undefined.
Besides using #GError, there is another major reason to prefer this function over the call provided by the system; on Unix, it will attempt to correctly handle EINTR, which has platform-specific semantics.
It is a bug to call this function with an invalid file descriptor.
On POSIX platforms since GLib 2.76, this function is async-signal safe if (and only if) error is null and fd is a valid open file descriptor. This makes it safe to call from a signal handler or a #GSpawnChildSetupFunc under those conditions. See `signal(7)` and `signal-safety(7)` for more details.