Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Получает дескриптор файла операционной системы, связанный с указанным дескриптором файла.
Синтаксис
intptr_t _get_osfhandle(
int fd
);
Параметры
fd
Дескриптор существующего файла.
Возвращаемое значение
Возвращает дескриптор файла операционной системы, если fd
допустимый. В противном случае вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжить, возвращается INVALID_HANDLE_VALUE
значение (-1). Он также задает значение errno
EBADF
, указывающее недопустимый дескриптор файла. Чтобы избежать предупреждения при использовании результата в качестве дескриптора файла Win32, приведение его к типу HANDLE
.
Примечание.
Если stdin
, stdout
и stderr
не связаны с потоком (например, в приложении Windows без окна консоли), значения дескриптора файлов для этих потоков возвращаются в _fileno
качестве специального значения -2. Аналогичным образом, если в качестве параметра дескриптора файла используется значение 0, 1 или 2, а не результат вызова _fileno
, _get_osfhandle
также возвращается специальное значение -2, если дескриптор файла не связан с потоком и не задан errno
. Однако это не допустимое значение дескриптора файлов, а последующие вызовы, которые пытаются использовать его, скорее всего, завершаются ошибкой.
Дополнительные сведения об EBADF
и других кодах ошибок см. в разделеerrno
, _doserrno
и _sys_errlist
_sys_nerr
.
Замечания
Чтобы закрыть файл, дескриптор которого получает _get_osfhandle
дескриптор операционной системы (ОС), вызовите _close
дескриптор fd
файла. Никогда не вызывайте CloseHandle
возвращаемое значение этой функции. Базовый дескриптор ОС принадлежит дескриптору fd
файла и закрывается при _close
вызове fd
. Если дескриптор файла принадлежит потоку FILE *
, вызов fclose
FILE *
этого потока закрывает дескриптор файла и дескриптор базовой ОС. В этом случае не вызывайте _close
дескриптор файла.
По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.
Требования
Маршрут | Обязательный заголовок |
---|---|
_get_osfhandle |
<io.h> |
Дополнительные сведения о совместимости см. в разделе Совместимость.
См. также
Обработка файлов
_close
_creat
, _wcreat
_dup
, _dup2
_open
, _wopen
_open_osfhandle