#managed #traits #clone #handles #dealing #file #filehandle

pakr-managedrawfd

一个Trait和两个Impls,用于处理具有合理Clone trait实现的自动关闭RawFd文件句柄。

1 个稳定版本

1.0.0 2020年9月29日

#510操作系统

BSD-2-Clause

9KB
102

一个Trait和两个Impls,用于处理具有合理Clone trait实现的自动关闭RawFd文件句柄。

  • DuplicatingFD直接持有原始句柄并通过调用dup(2)进行自我复制 - 即每个实例都有自己的句柄,该句柄在实例结束时单独关闭。在clone()调用时可能因底层操作系统错误而panic。

  • SharedFDstd::sync::Arc中持有原始句柄并通过复制该Arc进行自我复制 - 即每个实例共享一个句柄,该句柄在最后一个实例到达结束时关闭。

常用功能

两个实现...

  • 实现了AsRawFdClone traits。
  • 都有一个wrap(fd)构造函数,该构造函数只是将fd打包到管理外壳中,并接收所有权(之后不应使用fd,并且绝对不应close()它)。
  • 都有一个dup_wrap(fd)构造函数,该构造函数将fddup(2)副本打包到管理外壳中。它不接收原始fd的所有权,你应该妥善处理。
  • 都有一个dup()方法,该方法根据句柄进行克隆,并返回最终错误。

多访问

这两个都不是多访问安全的,其中SharedFD甚至更不安全。

  • 每个相关的 DuplicatingFD 实例都有自己的读写指针(在写入时仍会相互干扰)。
  • 所有相关的 SharedFD 实例有一个单一的、共享的读写指针。

依赖关系

~43KB