Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Recupera l''handle di file del sistema operativo associato al descrittore di file specificato.
Sintassi
intptr_t _get_osfhandle(
int fd
);
Parametri
fd
Descrittore di file esistente.
Valore restituito
Restituisce un handle di file del sistema operativo se fd è valido. In caso contrario, viene richiamato il gestore di parametri non validi, come descritto in Convalida dei parametri. Se l'esecuzione può continuare, restituisce INVALID_HANDLE_VALUE (-1). Imposta anche su errno EBADF, che indica un handle di file non valido. Per evitare un avviso quando il risultato viene usato come handle di file Win32, eseguirne il cast a un HANDLE tipo.
Nota
Quando stdin, stdoute stderr non sono associati a un flusso (ad esempio, in un'applicazione Windows senza una finestra della console), i valori del descrittore di file per questi flussi vengono restituiti come _fileno valore speciale -2. Analogamente, se si usa un parametro 0, 1 o 2 come parametro del descrittore di file anziché il risultato di una chiamata a _fileno, _get_osfhandle restituisce anche il valore speciale -2 quando il descrittore di file non è associato a un flusso e non imposta errno. Tuttavia, questo non è un valore di handle di file valido e le chiamate successive che tentano di usarlo potrebbero non riuscire.
Per altre informazioni su EBADF e altri codici di errore, vedere errno, _doserrno, _sys_errliste _sys_nerr.
Osservazioni:
Per chiudere un file il cui handle di file del sistema operativo (OS) viene ottenuto da _get_osfhandle, chiamare _close sul descrittore fddi file . Non chiamare CloseHandle mai sul valore restituito di questa funzione. L'handle di file del sistema operativo sottostante è di proprietà del fd descrittore di file e viene chiuso quando _close viene chiamato su fd. Se il descrittore di file è di proprietà di un FILE * flusso, la chiamata fclose a tale FILE * flusso chiude sia il descrittore di file che l'handle del file del sistema operativo sottostante. In questo caso, non chiamare _close il descrittore di file.
Per impostazione predefinita, lo stato globale di questa funzione è limitato all'applicazione. Per modificare questo comportamento, vedere Stato globale in CRT.
Requisiti
| Ciclo | Intestazione obbligatoria |
|---|---|
_get_osfhandle |
<io.h> |
Per altre informazioni sulla compatibilità, vedere Compatibility (Compatibilità).
Vedi anche
Gestione dei file
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle