_open_osfhandle

将 C 运行时文件描述符与现有操作系统文件句柄关联。

语法

int _open_osfhandle (
   intptr_t osfhandle,
   int flags
);

参数

osfhandle
操作系统文件句柄。

flags
允许的操作类型。

返回值

如果成功,_open_osfhandle 返回 C 运行时文件描述符。 否则,返回 -1。

备注

_open_osfhandle 函数分配 C 运行时文件描述符。 它将此文件描述符与 osfhandle 指定的操作系统文件句柄相关联。 为避免编译器发出警告,请将 osfhandle 参数的 HANDLE 强制转换为 intptr_tflags 参数是一个整数表达式,是由在 <fcntl.h> 中定义的一个或多个清单常量组合构成。 可以使用位“or”(|) 运算符组合两个或多个清单常量来构成 flags 参数。

<fcntl.h> 中定义以下清单常量:

常量 说明
_O_APPEND 在执行每个写入操作之前,将文件指针定位到文件结尾。
_O_RDONLY 打开文件以供只读。
_O_TEXT 在 ANSI 文本(已翻译)模式下打开文件。
_O_WTEXT 在 Unicode(转换 UTF-16)模式下打开文件。

_open_osfhandle 调用将 Win32 文件句柄的所有权转移给文件描述符。 若要关闭使用 _open_osfhandle 打开的文件,请调用 _close。 底层 OS 文件句柄也由对 _close 的调用关闭。 请勿对原始句柄调用 Win32 函数 CloseHandle。 如果文件描述符由 FILE * 流拥有,则对 fclose 的调用会关闭文件描述符和底层句柄。 在此情况下,请勿在文件描述符上调用 _close,或在原始句柄上调用 CloseHandle

默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态

要求

例程 必需的标头
_open_osfhandle <io.h>

有关兼容性的详细信息,请参阅 兼容性

另请参阅

文件处理
_get_osfhandle