将 C 运行时文件描述符与现有操作系统文件句柄关联。
语法
int _open_osfhandle (
intptr_t osfhandle,
int flags
);
参数
osfhandle
操作系统文件句柄。
flags
允许的操作类型。
返回值
如果成功,_open_osfhandle 返回 C 运行时文件描述符。 否则,返回 -1。
备注
_open_osfhandle 函数分配 C 运行时文件描述符。 它将此文件描述符与 osfhandle 指定的操作系统文件句柄相关联。 为避免编译器发出警告,请将 osfhandle 参数的 HANDLE 强制转换为 intptr_t。 flags 参数是一个整数表达式,是由在 <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> |
有关兼容性的详细信息,请参阅 兼容性。