Win32 版本的 fcntl(..., F_DUPFD. ...)?

Win32 version of fcntl(..., F_DUPFD. ...)?

提问人:Roland Mainz 提问时间:11/18/2023 最后编辑:Remy LebeauRoland Mainz 更新时间:11/18/2023 访问量:58

问:

Win32 有 、 等 - 但是是否有 Win32 版本可以复制给定的文件描述符,并使用比给定参数更大的最低可用文件描述符(例如,这不是 Win32 或 !!)?_open()_open_osfhandle()fcntl(..., F_DUPFD. ...)_dup()_dup2()

我基本上是在寻找 Win32 的此函数的 Linux/Solaris/Illumos 实现,或仿真代码:fcntl()

   F_DUPFD (int)
          Duplicate the file descriptor fd using the lowest-numbered
          available file descriptor greater than or equal to arg.
          This is different from dup2(2), which uses exactly the
          file descriptor specified.
winapi fcntl

评论

0赞 Mgetz 11/18/2023
_open和 cousins 由 Windows 上的通用 CRT 中的兼容层提供。本机操作系统的运行方式不同,并且 的值被认为是不透明的,因此不需要功能。在 Win32 上不能保证 s 将按顺序分配。因此,有很多方法可以在 Win32 上做类似的事情,但不是您要求复制到尽可能低的句柄的方法。那根本不是一回事。HANDLEHANDLEHANDLEfcntl
0赞 Ben Voigt 11/18/2023
正如 Mgetz 所说,文件描述符在 Windows 上是虚构的。一个 fd 在数值上高于另一个 fd 可能暗示的任何含义都不适用于 Windows。

答: 暂无答案