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