_open_osfhandle
将 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> |
有关兼容性的详细信息,请参阅 兼容性。