Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Получает дескриптор файла операционной системы, связанный с указанным дескриптором файла.
Синтаксис
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