1 个稳定版本
1.0.0 | 2020年9月29日 |
---|
#510 在 操作系统 中
9KB
102 行
一个Trait和两个Impls,用于处理具有合理Clone trait实现的自动关闭RawFd
文件句柄。
-
DuplicatingFD
直接持有原始句柄并通过调用dup(2)进行自我复制 - 即每个实例都有自己的句柄,该句柄在实例结束时单独关闭。在clone()
调用时可能因底层操作系统错误而panic。 -
SharedFD
在std::sync::Arc
中持有原始句柄并通过复制该Arc
进行自我复制 - 即每个实例共享一个句柄,该句柄在最后一个实例到达结束时关闭。
常用功能
两个实现...
- 实现了
AsRawFd
和Clone
traits。 - 都有一个
wrap(fd)
构造函数,该构造函数只是将fd
打包到管理外壳中,并接收所有权(之后不应使用fd
,并且绝对不应close()
它)。 - 都有一个
dup_wrap(fd)
构造函数,该构造函数将fd
的dup(2)副本打包到管理外壳中。它不接收原始fd
的所有权,你应该妥善处理。 - 都有一个
dup()
方法,该方法根据句柄进行克隆,并返回最终错误。
多访问
这两个都不是多访问安全的,其中SharedFD
甚至更不安全。
- 每个相关的
DuplicatingFD
实例都有自己的读写指针(在写入时仍会相互干扰)。 - 所有相关的
SharedFD
实例有一个单一的、共享的读写指针。
依赖关系
~43KB