| Crates.io | filedesc |
| lib.rs | filedesc |
| version | 0.6.3 |
| created_at | 2020-06-27 13:58:58.476986+00 |
| updated_at | 2023-09-20 17:35:41.481959+00 |
| description | thin wrapper around raw file descriptors |
| homepage | |
| repository | https://github.com/de-vri-es/filedesc-rs |
| max_upload_size | |
| id | 258791 |
| size | 17,531 |
This crate exposes a single type: FileDesc,
which acts as a thin wrapper around open file descriptors.
The wrapped file descriptor is closed when the wrapper is dropped.
You can call FileDesc::new() with any type that implements IntoRawFd,
or duplicate the file descriptor of a type that implements AsRawFd with duplicate_from,
or directly from a raw file descriptor with from_raw_fd() and duplicate_raw_fd().
Wrapped file descriptors can also be duplicated with the duplicate() function.
Whenever the library duplicates a file descriptor, it tries to set the close-on-exec flag atomically.
On platforms where this is not supported, the library falls back to setting the flag non-atomically.
When an existing file descriptor is wrapped, the close-on-exec flag is left as it was.
You can also check or set the close-on-exec flag with the get_close_on_exec()
and set_close_on_exec functions.
use filedesc::FileDesc;
let fd = unsafe { FileDesc::from_raw_fd(raw_fd) };
let duplicated = unsafe { fd.duplicate()? };
assert_eq!(duplicated.get_close_on_exec()?, true);
duplicated.set_close_on_exec(false)?;
assert_eq!(duplicated.get_close_on_exec()?, false);