_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 EBADF
valeur , 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
, stdout
et 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 errno
pas . 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_errlist
et _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 fd
de 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