Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Paylaşım için bir dosya açar. Bu işlevlerin daha güvenli sürümleri kullanılabilir: bkz _sopen_s. , _wsopen_s.
Sözdizimi
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
Parametreler
filename
Dosya adı.
oflag
İzin verilen işlem türü.
shflag
İzin verilen paylaşım türü.
pmode
İzin ayarı.
Dönüş değeri
Bu işlevlerin her biri, açılan dosya için bir dosya tanımlayıcısı döndürür.
veya bir işaretçiyse filename veya geçerli bir değer aralığında değilse oflag veya NULL değilse, Parametre doğrulamaoflagaçıklandığı gibi geçersiz parametre işleyicisi çağrılır.shflag Yürütmenin devam etmesi için izin verilirse, bu işlevler -1 döndürür ve aşağıdaki değerlerden birine ayarlanır errno .
errno değer |
Koşul |
|---|---|
EACCES |
Verilen yol bir dizin veya dosya salt okunur ancak yazma için açma işlemi denendi. |
EEXIST |
_O_CREAT ve _O_EXCL bayrakları belirtildi, ancak filename zaten var. |
EINVAL |
Geçersiz oflag veya shflag bağımsız değişken. |
EMFILE |
Başka dosya tanımlayıcısı yok. |
ENOENT |
Dosya veya yol bulunamadı. |
Bunlar ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.
Açıklamalar
_sopen işlevi tarafından filename belirtilen dosyayı açar ve ve oflagtarafından shflag tanımlandığı gibi dosyayı paylaşılan okuma veya yazma için hazırlar.
_wsopen , öğesinin _sopengeniş karakterli bir sürümüdür; filename bağımsız değişkeni _wsopen geniş karakterli bir dizedir.
_wsopen ve _sopen aksi takdirde aynı şekilde davran.
Varsayılan olarak, bu işlevin genel durumunun kapsamı uygulama olarak belirlenmiştir. Bunu değiştirmek için bkz . CRT'de Genel durum.
Genel metin yordamı eşlemeleri
Tchar.h olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
|---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
Tamsayı ifadesi oflag , içinde <fcntl.h>tanımlanan aşağıdaki bildirim sabitlerinden biri veya daha fazlası birleştirilerek oluşturulur. bağımsız değişkenini oflagoluşturan iki veya daha fazla sabit, bit düzeyinde OR işleci ( | ) ile birleştirilir.
oflag sabit |
Davranış |
|---|---|
_O_APPEND |
Her yazma işleminden önce dosya işaretçisini dosyanın sonuna taşır. |
_O_BINARY |
Dosyayı ikili (çevrilmemiş) modda açar. (İkili modun açıklaması için bkz fopen .) |
_O_CREAT |
Bir dosya oluşturur ve yazmak üzere açar. tarafından filename belirtilen dosyanın mevcut olması durumunda hiçbir etkisi olmaz. Bağımsız pmode değişken belirtildiğinde _O_CREAT gereklidir. |
_O_CREAT | _O_SHORT_LIVED |
Geçici olarak bir dosya oluşturur ve mümkünse diske boşaltmaz. Bağımsız pmode değişken belirtildiğinde _O_CREAT gereklidir. |
_O_CREAT | _O_TEMPORARY |
Geçici olarak bir dosya oluşturur; dosya, son dosya tanımlayıcısı kapatıldığında silinir. Bağımsız pmode değişken belirtildiğinde _O_CREAT gereklidir. Uygulama uyumluluğu için eski davranışı korumak için diğer işlemlerin bu dosyayı silmesi engellenmez. |
_O_CREAT | _O_EXCL |
tarafından filename belirtilen bir dosya varsa bir hata değeri döndürür. Yalnızca ile _O_CREATkullanıldığında geçerlidir. |
_O_NOINHERIT |
Paylaşılan dosya tanımlayıcısının oluşturulmasını engeller. |
_O_RANDOM |
Önbelleğe almanın diskten rastgele erişim için iyileştirildiğini ancak bununla sınırlı olmadığını belirtir. |
_O_RDONLY |
Dosyayı yalnızca okumak üzere açar. veya _O_RDWRile _O_WRONLY belirtilemiyor. |
_O_RDWR |
Hem okuma hem de yazma için bir dosya açar. veya _O_RDONLYile _O_WRONLY belirtilemiyor. |
_O_SEQUENTIAL |
Önbelleğe almanın diskten sıralı erişim için iyileştirildiğini ancak bununla sınırlı olmadığını belirtir. |
_O_TEXT |
Bir dosyayı ANSI metin (çevrilmiş) modunda açar. Daha fazla bilgi için bkz . Metin ve ikili mod dosyası G/Ç ve fopen. |
_O_TRUNC |
Bir dosyayı açar ve sıfır uzunluğa kısaltarak; dosya yazma iznine sahip olmalıdır. ile _O_RDONLYbelirtilemiyor.
_O_TRUNC ile _O_CREAT kullanıldığında, var olan bir dosya açılır veya dosya oluşturulur.
Not: Bayrak, _O_TRUNC belirtilen dosyanın içeriğini yok eder. |
_O_WRONLY |
Yalnızca yazmak için bir dosya açar. veya _O_RDONLYile _O_RDWR belirtilemiyor. |
_O_U16TEXT |
Dosyayı Unicode UTF-16 modunda açar. |
_O_U8TEXT |
Dosyayı Unicode UTF-8 modunda açar. |
_O_WTEXT |
Dosyayı Unicode modunda açar. |
Dosya erişim modunu belirtmek için , _O_RDONLYveya _O_RDWRbelirtmelisiniz_O_WRONLY. Erişim modu için varsayılan değer yoktur.
Bir dosya , _O_WTEXTveya _O_U8TEXTkullanılarak _O_U16TEXTUnicode modunda açıldığında, giriş işlevleri dosyadan okunan verileri tür wchar_tolarak depolanan UTF-16 verilerine çevirir. Unicode modunda açılan bir dosyaya yazan işlevler, türü wchar_tolarak depolanan UTF-16 verilerini içeren arabellekleri bekler. Dosya UTF-8 olarak kodlanmışsa UTF-16 verileri yazıldığında UTF-8'e çevrilir. Dosyanın UTF-8 kodlu içeriği okunduğunda UTF-16'ya çevrilir. Unicode modunda tek sayıda bayt okuma veya yazma girişimi parametre doğrulama hatasına neden olur. Programınızda UTF-8 olarak depolanan verileri okumak veya yazmak için Unicode modu yerine metin veya ikili dosya modu kullanın. Gerekli kodlama çevirisi sizin sorumluluğundadır.
(ekleme modu) ve _sopen, _O_WRONLYveya | ile _O_APPEND_O_WTEXT_O_U16TEXT çağrılırsa_O_U8TEXT, önce dosyayı okuma ve yazma için açmaya çalışır, ürün reçetesini okur ve sonra yalnızca yazmak üzere yeniden açar. Dosyayı okuma ve yazma için açma işlemi başarısız olursa, dosyayı yalnızca yazmak üzere açar ve Unicode modu ayarı için varsayılan değeri kullanır.
bağımsız değişkeni shflag , içinde <share.h>tanımlanan aşağıdaki bildirim sabitlerinden birini içeren sabit bir ifadedir.
shflag sabit |
Davranış |
|---|---|
_SH_DENYRW |
Dosyaya okuma ve yazma erişimini reddeder. |
_SH_DENYWR |
Dosyaya yazma erişimini reddeder. |
_SH_DENYRD |
Dosyaya okuma erişimini reddeder. |
_SH_DENYNO |
Okuma ve yazma erişimine izin verir. |
Bağımsız pmode değişken yalnızca belirtildiğinde _O_CREAT gereklidir. Dosya yoksa, pmode dosyanın yeni dosya ilk kapatıldığında ayarlanan izin ayarlarını belirtir. Aksi takdirde yoksayılır pmode .
pmode, içinde tanımlanan _S_IWRITEbildirim sabitlerinden _S_IREAD<sys\stat.h>birini veya her ikisini içeren bir tamsayı ifadesidir. Her iki sabit de verildiğinde bit düzeyinde OR işleciyle birleştirilir. anlamı pmode aşağıdaki gibidir.
pmode |
Anlamı |
|---|---|
_S_IREAD |
Yalnızca okuma izni verilir. |
_S_IWRITE |
Yazma izni verilir. (Aslında, okuma ve yazma izin verir.) |
_S_IREAD | _S_IWRITE |
Okuma ve yazma izin verilir. |
Yazma izni verilmezse, dosya salt okunurdur. Windows işletim sisteminde tüm dosyalar okunabilir; yalnızca yazma izni vermek mümkün değildir. Bu nedenle, ve _S_IWRITE modları _S_IREAD | _S_IWRITE eşdeğerdir.
_sopen , izinler ayarlanmadan önce geçerli dosya-izin maskesini 'a pmode uygular. Daha fazla bilgi için bkz. _umask.
Gereksinimler
| İşlev | Gerekli başlık | İsteğe bağlı üst bilgi |
|---|---|---|
_sopen |
<io.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h> |
_wsopen |
<io.h> veya <wchar.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h> |
Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Örnek
örneğine _lockingbakın.
Ayrıca bkz.
Alt düzey G/Ç
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen