Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Получает дескриптор файла операционной системы, связанный с указанным дескриптором файла.
Синтаксис
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