_sopen
, _wsopen
Membuka file untuk berbagi. Versi fungsi ini yang lebih aman tersedia: lihat _sopen_s
, _wsopen_s
.
Sintaks
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
Parameter
filename
Nama file.
oflag
Jenis operasi yang diizinkan.
shflag
Jenis berbagi yang diizinkan.
pmode
Pengaturan izin.
Nilai hasil
Masing-masing fungsi ini mengembalikan pendeskripsi file untuk file yang dibuka.
Jika filename
atau oflag
adalah NULL
penunjuk, atau jika oflag
atau shflag
tidak berada dalam rentang nilai yang valid, handler parameter yang tidak valid dipanggil, seperti yang dijelaskan dalam Validasi parameter. Jika eksekusi diizinkan untuk melanjutkan, fungsi-fungsi ini mengembalikan -1 dan diatur errno
ke salah satu nilai berikut.
errno nilai |
Kondisi |
---|---|
EACCES |
Jalur yang diberikan adalah direktori, atau file bersifat baca-saja, tetapi operasi buka untuk menulis telah dicoba. |
EEXIST |
_O_CREAT dan _O_EXCL bendera ditentukan, tetapi filename sudah ada. |
EINVAL |
Tidak valid oflag atau shflag argumen. |
EMFILE |
Tidak ada lagi deskriptor file yang tersedia. |
ENOENT |
File atau jalur tidak ditemukan. |
Untuk informasi selengkapnya tentang kode pengembalian ini dan lainnya, lihat errno
, , _doserrno
_sys_errlist
, dan _sys_nerr
.
Keterangan
Fungsi _sopen
membuka file yang ditentukan oleh filename
dan menyiapkan file untuk pembacaan atau penulisan bersama, seperti yang didefinisikan oleh oflag
dan shflag
. _wsopen
adalah versi karakter luas dari _sopen
; filename
argumen ke _wsopen
adalah string karakter lebar. _wsopen
dan _sopen
berulah secara identik jika tidak.
Secara default, status global fungsi ini dicakup ke aplikasi. Untuk mengubahnya, lihat Status global di CRT.
Pemetaan rutin teks generik
Tchar.h Rutin |
_UNICODE dan _MBCS tidak ditentukan |
_MBCS Didefinisikan |
_UNICODE Didefinisikan |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
Ekspresi oflag
bilangan bulat dibentuk dengan menggabungkan satu atau beberapa konstanta manifes berikut, yang didefinisikan dalam <fcntl.h>
. Ketika dua konstanta atau lebih membentuk argumen oflag
, konstanta tersebut dikombinasikan dengan operator bitwise-OR ( |
).
konstanta oflag |
Perilaku |
---|---|
_O_APPEND |
Memindahkan penunjuk file ke akhir file sebelum setiap operasi tulis. |
_O_BINARY |
Membuka file dalam mode biner (tidak diterjemahkan). (Lihat fopen untuk deskripsi mode biner.) |
_O_CREAT |
Membuat file dan membukanya untuk ditulis. Tidak berpengaruh jika file yang ditentukan oleh filename ada. Argumen pmode diperlukan ketika _O_CREAT ditentukan. |
_O_CREAT | _O_SHORT_LIVED |
Membuat file sebagai sementara dan jika memungkinkan tidak memerah ke disk. Argumen pmode diperlukan ketika _O_CREAT ditentukan. |
_O_CREAT | _O_TEMPORARY |
Membuat file sebagai sementara; file dihapus ketika pendeskripsi file terakhir ditutup. Argumen pmode diperlukan ketika _O_CREAT ditentukan. Untuk mempertahankan perilaku warisan untuk kompatibilitas aplikasi, proses lain tidak dicegah menghapus file ini. |
_O_CREAT | _O_EXCL |
Mengembalikan nilai kesalahan jika file yang ditentukan oleh filename ada. Hanya berlaku saat digunakan dengan _O_CREAT . |
_O_NOINHERIT |
Mencegah pembuatan deskriptor file bersama. |
_O_RANDOM |
Menentukan bahwa penembolokan dioptimalkan untuk, tetapi tidak dibatasi, akses acak dari disk. |
_O_RDONLY |
Membuka file untuk dibaca saja. Tidak dapat ditentukan dengan _O_RDWR atau _O_WRONLY . |
_O_RDWR |
Membuka file untuk membaca dan menulis. Tidak dapat ditentukan dengan _O_RDONLY atau _O_WRONLY . |
_O_SEQUENTIAL |
Menentukan bahwa penembolokan dioptimalkan untuk, tetapi tidak dibatasi, akses berurutan dari disk. |
_O_TEXT |
Membuka file dalam mode teks (diterjemahkan). (Untuk informasi selengkapnya, lihat Teks dan file mode biner I/O dan fopen .) |
_O_TRUNC |
Membuka file dan memotongnya menjadi panjang nol; file harus memiliki izin tulis. Tidak dapat ditentukan dengan _O_RDONLY . _O_TRUNC digunakan dengan _O_CREAT membuka file yang ada atau membuat file. Catatan: Bendera _O_TRUNC menghancurkan konten file yang ditentukan. |
_O_WRONLY |
Membuka file hanya untuk menulis. Tidak dapat ditentukan dengan _O_RDONLY atau _O_RDWR . |
_O_U16TEXT |
Membuka file dalam mode Unicode UTF-16. |
_O_U8TEXT |
Membuka file dalam mode Unicode UTF-8. |
_O_WTEXT |
Membuka file dalam mode Unicode. |
Untuk menentukan mode akses file, Anda harus menentukan _O_RDONLY
, , _O_RDWR
atau _O_WRONLY
. Tidak ada nilai default untuk mode akses.
Ketika file dibuka dalam mode Unicode dengan menggunakan _O_WTEXT
fungsi input , , _O_U8TEXT
atau _O_U16TEXT
, menerjemahkan data yang dibaca dari file ke dalam data UTF-16 yang disimpan sebagai jenis wchar_t
. Fungsi yang menulis ke file yang dibuka dalam mode Unicode mengharapkan buffer yang berisi data UTF-16 yang disimpan sebagai jenis wchar_t
. Jika file dikodekan sebagai UTF-8, maka data UTF-16 diterjemahkan ke dalam UTF-8 saat ditulis. Konten yang dikodekan UTF-8 file diterjemahkan ke dalam UTF-16 saat dibaca. Upaya untuk membaca atau menulis jumlah byte ganjil dalam mode Unicode menyebabkan kesalahan validasi parameter. Untuk membaca atau menulis data yang disimpan dalam program Anda sebagai UTF-8, gunakan mode teks atau file biner alih-alih mode Unicode. Anda bertanggung jawab atas terjemahan pengodean yang diperlukan.
Jika _sopen
dipanggil dengan _O_WRONLY
_O_APPEND
| (mode tambahan) dan _O_WTEXT
, , _O_U16TEXT
atau _O_U8TEXT
, pertama-tama mencoba membuka file untuk membaca dan menulis, baca BOM, lalu buka kembali untuk menulis saja. Jika membuka file untuk membaca dan menulis gagal, file hanya akan terbuka untuk menulis dan menggunakan nilai default untuk pengaturan mode Unicode.
Argumen shflag
adalah ekspresi konstanta yang terdiri dari salah satu konstanta manifes berikut, yang didefinisikan dalam <share.h>
.
konstanta shflag |
Perilaku |
---|---|
_SH_DENYRW |
Menolak akses baca dan tulis ke file. |
_SH_DENYWR |
Menolak akses tulis ke file. |
_SH_DENYRD |
Menolak akses baca ke file. |
_SH_DENYNO |
Mengizinkan akses baca dan tulis. |
Argumen pmode
hanya diperlukan ketika _O_CREAT
ditentukan. Jika file tidak ada, pmode
tentukan pengaturan izin file, yang diatur saat file baru ditutup untuk pertama kalinya. Jika tidak, pmode
diabaikan. pmode
adalah ekspresi bilangan bulat yang berisi satu atau kedua konstanta _S_IWRITE
manifes dan _S_IREAD
, yang didefinisikan dalam <sys\stat.h>
. Ketika kedua konstanta diberikan, konstanta tersebut dikombinasikan dengan operator bitwise-OR. Artinya pmode
adalah sebagai berikut.
pmode |
Makna |
---|---|
_S_IREAD |
Hanya membaca yang diizinkan. |
_S_IWRITE |
Penulisan diizinkan. (Berlaku, mengizinkan pembacaan dan penulisan.) |
_S_IREAD | _S_IWRITE |
Membaca dan menulis diizinkan. |
Jika izin tulis tidak diberikan, file bersifat baca-saja. Dalam sistem operasi Windows, semua file dapat dibaca; tidak dimungkinkan untuk memberikan izin tulis-saja. Oleh karena itu, mode _S_IWRITE
dan _S_IREAD | _S_IWRITE
setara.
_sopen
menerapkan masker izin file saat ini ke pmode
sebelum izin diatur. Untuk informasi selengkapnya, lihat _umask
.
Persyaratan
Function | Header yang diperlukan | Header opsional |
---|---|---|
_sopen |
<io.h> |
<fcntl.h> , <sys\types.h> , <sys\stat.h> , <share.h> |
_wsopen |
<io.h> atau <wchar.h> |
<fcntl.h> , <sys\types.h> , <sys\stat.h> , <share.h> |
Untuk informasi kompatibilitas selengkapnya, lihat Kompatibilitas.
Contoh
Lihat contoh untuk _locking
.
Baca juga
I/O tingkat rendah
_close
_creat
, _wcreat
fopen
, _wfopen
_fsopen
, _wfsopen
_open
, _wopen
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk