_get_osfhandle

Получает дескриптор файла операционной системы, связанный с указанным дескриптором файла.

Синтаксис

intptr_t _get_osfhandle(
   int fd
);

Параметры

fd
Дескриптор существующего файла.

Возвращаемое значение

Возвращает дескриптор файла операционной системы, если fd допустимый. В противном случае вызывается обработчик недопустимых параметров, как описано в разделе "Проверка параметров". Если выполнение разрешено продолжить, возвращается INVALID_HANDLE_VALUE значение (-1). Он также задает значение errnoEBADF, указывающее недопустимый дескриптор файла. Чтобы избежать предупреждения при использовании результата в качестве дескриптора файла 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 * , вызов fcloseFILE * этого потока закрывает дескриптор файла и дескриптор базовой ОС. В этом случае не вызывайте _close дескриптор файла.

По умолчанию глобальное состояние этой функции ограничивается приложением. Чтобы изменить это поведение, см . статью "Глобальное состояние" в CRT.

Требования

Маршрут Обязательный заголовок
_get_osfhandle <io.h>

Дополнительные сведения о совместимости см. в разделе Совместимость.

См. также

Обработка файлов
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle