Expand description
closefds is a library that provides support for setting the FD_CLOEXEC
flag on all open
file descriptors after fork()
and before exec()
on UNIX-like systems.
Any file descriptors that aren’t marked with this flag will stay open after exec()
which can cause resources to leak and can lead to deadlocks. Ideally, whenever a file
descriptor is created, it will be created with the FD_CLOEXEC
flag already set.
However, this may not be possible in some circumstances - such as when using an
external library or a system call that does not support the FD_CLOEXEC
flag, such as
pipe()
.
The function close_fds_on_exec()
will create a closure that can be passed
as a pre_exec()
function when spawning a child process via the Command
interface
and will set the FD_CLOEXEC
flag as appropriate on open file descriptors.
Functions§
- close_
fds_ on_ exec - Create a closure that will set the
FD_CLOEXEC
flag on all open file descriptors when called. This function should be called before invokingfork()
as it may allocate memory. The returned closure should be called afterfork()
by the child process.