Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mengambil handel file sistem operasi yang terkait dengan deskriptor file yang ditentukan.
Sintaks
intptr_t _get_osfhandle(
int fd
);
Parameter
fd
Pendeskripsi file yang ada.
Nilai hasil
Mengembalikan handel file sistem operasi jika fd valid. Jika tidak, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, eksekusi akan INVALID_HANDLE_VALUE mengembalikan (-1). Ini juga diatur errno ke EBADF, menunjukkan handel file yang tidak valid. Untuk menghindari peringatan ketika hasilnya digunakan sebagai handel file Win32, transmisikan ke HANDLE jenis.
Catatan
Ketika stdin, stdout, dan stderr tidak terkait dengan aliran (misalnya, dalam aplikasi Windows tanpa jendela konsol), nilai deskriptor file untuk aliran ini dikembalikan dari _fileno sebagai nilai khusus -2. Demikian pula, jika Anda menggunakan 0, 1, atau 2 sebagai parameter deskriptor file alih-alih hasil panggilan ke _fileno, _get_osfhandle juga mengembalikan nilai khusus -2 ketika deskriptor file tidak terkait dengan aliran, dan tidak mengatur errno. Namun, ini bukan nilai handel file yang valid, dan panggilan berikutnya yang mencoba menggunakannya kemungkinan gagal.
Untuk informasi selengkapnya tentang EBADF dan kode kesalahan lainnya, lihat errno, , _doserrno_sys_errlist, dan _sys_nerr.
Keterangan
Untuk menutup file yang handel file sistem operasinya (OS) diperoleh oleh _get_osfhandle, panggil _close pada pendeskripsi fdfile . Jangan pernah memanggil CloseHandle nilai pengembalian fungsi ini. Handel file OS yang mendasar dimiliki oleh fd pendeskripsi file, dan ditutup ketika _close dipanggil pada fd. Jika pendeskripsi file dimiliki oleh FILE * aliran, maka memanggil fclose aliran FILE * tersebut menutup pendeskripsi file dan handel file OS yang mendasar. Dalam hal ini, jangan panggil _close pada deskriptor file.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubah perilaku ini, lihat Status global di CRT.
Persyaratan
| Rutin | Header yang diperlukan |
|---|---|
_get_osfhandle |
<io.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Lihat juga
Penanganan file
_close
_creat, _wcreat
_dup, _dup2
_open, _wopen
_open_osfhandle