Aracılığıyla paylaş


_sopen_s, _wsopen_s

Paylaşım için bir dosya açar. ve sürümlerinin _sopen_wsopen, CRT'deki Güvenlik özellikleri bölümünde açıklandığı gibi güvenlik geliştirmeleri vardır.

Sözdizimi

errno_t _sopen_s(
   int* pfh,
   const char *filename,
   int oflag,
   int shflag,
   int pmode
);
errno_t _wsopen_s(
   int* pfh,
   const wchar_t *filename,
   int oflag,
   int shflag,
   int pmode,
);

Parametreler

pfh
Dosya tanıtıcısı veya hata varsa -1.

filename
Dosya adı.

oflag
İzin verilen işlem türü.

shflag
İzin verilen paylaşım türü.

pmode
İzin ayarı.

Dönüş değeri

Sıfır olmayan dönüş değeri bir hatayı gösterir; bu durumda errno , aşağıdaki değerlerden birine ayarlanır.

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, shflagveya pmode bağımsız değişkeni veya pfhfilename null işaretçisi.
EMFILE Başka dosya tanımlayıcısı yok.
ENOENT Dosya veya yol bulunamadı.

İşleve geçersiz bir bağımsız değişken geçirilirse, parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisi çağrılır. Yürütmenin devam etmesi için izin verilirse, errno olarak ayarlanır EINVALve EINVAL döndürülür.

Bunlar ve diğer iade kodları hakkında daha fazla bilgi için bkz. errno, _doserrno, _sys_errlistve _sys_nerr.

Bir hata varsa, -1 üzerinden pfh döndürülür (null işaretçisi olmadığı sürece pfh ).

Açıklamalar

_sopen_s işlevi tarafından filename belirtilen dosyayı açar ve ve shflagtarafından oflag tanımlandığı gibi dosyayı paylaşılan okuma veya yazma için hazırlar. _wsopen_s , öğesinin _sopen_sgeniş karakterli bir sürümüdür; filename bağımsız değişkeni _wsopen_s geniş karakterli bir dizedir. _wsopen_s ve _sopen_s 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 Rutin _UNICODE ve _MBCS tanımlanmadı _MBCS Tanımlanan _UNICODE Tanımlanan
_tsopen_s _sopen_s _sopen_s _wsopen_s

Tamsayı ifadesi oflag , içinde <fcntl.h>tanımlanan bir veya daha fazla bildirim sabiti 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_WRONLYile _O_RDWR belirtilemiyor.
_O_RDWR Hem okuma hem de yazma için bir dosya açar. veya _O_WRONLYile _O_RDONLY 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_RDWRile _O_RDONLY 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_RDWRveya _O_WRONLYbelirtmelisiniz_O_RDONLY. Erişim modu için varsayılan değer yoktur.

Bir dosya , _O_U8TEXTveya _O_U16TEXTkullanılarak _O_WTEXTUnicode 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 , veya _O_U8TEXTile _O_WRONLY | _O_APPEND çağrılırsa_sopen_s, önce dosyayı okuma ve yazma için açmaya çalışır, ürün reçetesini okur ve sonra yalnızca yazmak _O_U16TEXTüzere yeniden açar._O_WTEXT 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 birinden oluşan bir sabit 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.

pmode bağımsız değişkeninin aksine _sopenher zaman gereklidir. belirttiğinizde _O_CREAT, 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 <sys\stat.h>bildirim sabitlerinden _S_IWRITE_S_IREADbirini 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_IREAD | _S_IWRITE modları _S_IWRITE eşdeğerdir.

_sopen_s , izinler ayarlanmadan önce geçerli dosya-izin maskesini 'a pmode uygular. (Bkz. _umask.)

Gereksinimler

İşlev Gerekli başlık İsteğe bağlı üst bilgi
_sopen_s <io.h> <fcntl.h>, <sys\types.h>, <sys\stat.h>, <share.h>
_wsopen_s <io.h> veya <wchar.h> <fcntl.h>, <sys/types.h>, <sys/stat.h>, <share.h>

_sopen_s ve _wsopen_s Microsoft uzantılarıdır. 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