10个版本 (5个重大更新)
| 0.6.3 | 2023年9月20日 |
|---|---|
| 0.6.1 | 2022年10月11日 |
| 0.5.0 | 2021年7月3日 |
| 0.3.0 | 2020年10月5日 |
| 0.2.0 | 2020年6月27日 |
#285 in Unix API
28,504次每月下载
用于 5 个crate(4个直接使用)
15KB
141 行
filedesc

此crate公开了一个类型:FileDesc,它作为打开文件描述符的薄封装。当封装器被丢弃时,封装的文件描述符将被关闭。
您可以调用 FileDesc::new() 与实现了 IntoRawFd 的任何类型,或者使用 duplicate_from 复制实现了 AsRawFd 的类型的文件描述符,或者直接使用 from_raw_fd() 和 duplicate_raw_fd() 从原始文件描述符。封装的文件描述符也可以使用 duplicate() 函数进行复制。
在执行时关闭
每当库复制一个文件描述符时,它都会尝试原子性地设置 close-on-exec 标志。在不支持此功能的平台上,库将回退到非原子性地设置标志。当封装现有的文件描述符时,close-on-exec 标志将被保留不变。
您还可以使用get_close_on_exec()和set_close_on_exec函数来检查或设置close-on-exec标志。
示例
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);
依赖项
~43KB