[][src]Crate closefds

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.



Create a closure that will set the FD_CLOEXEC flag on all open file descriptors when called. This function should be called before invoking fork() as it may allocate memory. The returned closure should be called after fork() by the child process.