Partage via


_get_osfhandle

Récupère le handle de fichier du système d’exploitation qui est associé au descripteur de fichier spécifié.

Syntaxe

intptr_t _get_osfhandle(
   int fd
);

Paramètres

fd
Descripteur de fichier existant.

Valeur retournée

Retourne un handle de fichier du système d’exploitation s’il fd est valide. Sinon, le gestionnaire de paramètres non valide est appelé, comme décrit dans la validation des paramètres. Si l’exécution est autorisée à continuer, elle retourne INVALID_HANDLE_VALUE (-1). Il définit errno également la EBADFvaleur , indiquant un handle de fichier non valide. Pour éviter un avertissement lorsque le résultat est utilisé comme handle de fichier Win32, convertissez-le en type HANDLE .

Remarque

Lorsque stdin, stdoutet stderr ne sont pas associés à un flux (par exemple, dans une application Windows sans fenêtre de console), les valeurs de descripteur de fichier pour ces flux sont retournées _fileno comme valeur spéciale -2. De même, si vous utilisez un paramètre de descripteur de fichier 0, 1 ou 2 au lieu du résultat d’un appel, _fileno_get_osfhandle retourne également la valeur spéciale -2 lorsque le descripteur de fichier n’est pas associé à un flux et ne définit errnopas . Toutefois, il ne s’agit pas d’une valeur de handle de fichier valide, et les appels suivants qui tentent de l’utiliser risquent d’échouer.

Pour plus d’informations sur EBADF et d’autres codes d’erreur, consultezerrno , , _doserrno_sys_errlistet _sys_nerr.

Notes

Pour fermer un fichier dont le handle de fichier du système d’exploitation est obtenu par _get_osfhandle, appelez _close le descripteur fdde fichier . N’appelez CloseHandle jamais la valeur de retour de cette fonction. Le handle de fichier du système d’exploitation sous-jacent appartient au fd descripteur de fichier et est fermé lorsqu’il _close est appelé .fd Si le descripteur de fichier appartient à un FILE * flux, l’appel fclose sur ce FILE * flux ferme à la fois le descripteur de fichier et le handle de fichier du système d’exploitation sous-jacent. Dans ce cas, n’appelez _close pas le descripteur de fichier.

Par défaut, l’état global de cette fonction est limité à l’application. Pour modifier ce comportement, consultez État global dans le CRT.

Spécifications

Routine En-tête requis
_get_osfhandle <io.h>

Pour plus d’informations sur la compatibilité, consultez Compatibility.

Voir aussi

Gestion des fichiers
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle