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.
Bir dosya açar. Daha güvenli sürümler kullanılabilir olduğundan bu işlevler kullanım dışıdır; bkz. _sopen_s, _wsopen_s.
Sözdizimi
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Parametreler
filename
Dosya adı.
oflag
İzin verilen işlem türü.
pmode
İzin modu.
Dönüş değeri
Bu işlevlerin her biri, açılan dosya için bir dosya tanımlayıcısı döndürür. -1 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 |
Yazma için salt okunur bir dosya açmaya çalıştı, dosyanın paylaşım modu belirtilen işlemlere izin vermiyor veya verilen yol bir dizin. |
EEXIST |
_O_CREAT ve _O_EXCL bayrakları belirtildi, ancak filename zaten var. |
EINVAL |
Geçersiz oflag veya pmode bağımsız değişken. |
EMFILE |
Başka dosya tanımlayıcısı yok (çok fazla dosya açık). |
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
_open işlevi tarafından filename belirtilen dosyayı açar ve tarafından oflagbelirtildiği gibi okuma veya yazma için hazırlar.
_wopen , öğesinin _opengeniş karakterli bir sürümüdür; filename bağımsız değişkeni _wopen geniş karakterli bir dizedir.
_wopen ve _open aksi takdirde aynı şekilde davran.
Genel metin yordamı eşlemeleri
<tchar.h> olağan |
_UNICODE ve _MBCS tanımlanmadı |
_MBCS tanımlanan |
_UNICODE tanımlanan |
|---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflag , içinde <fcntl.h>tanımlanan aşağıdaki bildirim sabitlerinden veya sabit birleşimlerinden bir veya daha fazlasından oluşturulmuş bir tamsayı ifadesidir.
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 dosyayı okumak üzere açmak için kullanılırsa _O_WTEXT , _open dosyanın başlangıcını okur ve bayt sipariş işaretini (BOM) denetler. Ürün reçetesi varsa, ürün reçetesine bağlı olarak dosya UTF-8 veya UTF-16LE olarak değerlendirilir. Ürün reçetesi yoksa, dosya ANSI olarak değerlendirilir. bir dosya kullanılarak _O_WTEXTyazılarak açıldığında UTF-16 kullanılır. Önceki ayar veya bayt sırası işareti ne olursa olsun, kullanılırsa _O_U8TEXT , dosya her zaman UTF-8 olarak açılır; kullanılırsa _O_U16TEXT , dosya her zaman UTF-16 olarak açılır.
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 , veya _openile _O_WRONLY | _O_APPEND çağrılırsa_O_WTEXT, ö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_U8TEXT 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 oluşturmak oflag için iki veya daha fazla bildirim sabiti kullanıldığında, sabitler bit düzeyinde OR işleci ( | ) ile birleştirilir. İkili ve metin modlarının tartışması için bkz . Metin ve ikili mod dosyası G/Ç.
Bağımsız pmode değişken yalnızca belirtildiğinde _O_CREAT gereklidir. Dosya zaten varsa yoksayılır pmode . Aksi takdirde, pmode yeni dosya ilk kez kapatıldığında ayarlanan dosya izin ayarlarını belirtir.
_open , izinler ayarlanmadan önce geçerli dosya-izin maskesini 'a pmode uygular. Daha fazla bilgi için bkz. _umask.
pmode , içinde <sys\stat.h>tanımlanan aşağıdaki bildirim sabitlerinden birini veya her ikisini içeren bir tamsayı ifadesidir.
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. |
Her iki sabit de verildiğinde bit düzeyinde OR işleciyle ( | ) birleştirilir. Windows'ta tüm dosyalar okunabilir; salt yazma izni kullanılamaz. Bu nedenle, ve _S_IWRITE_S_IREAD | modları _S_IWRITE eşdeğerdir.
ve 'nin _S_IREAD_S_IWRITE bir bileşiminden başka bir değer belirtilmişse pmode(başka bir işletim sisteminde geçerli pmode bir değer belirtse bile) veya izin verilen oflag değerler dışında bir değer belirtilmişse, işlev Hata Ayıklama modunda bir onay oluşturur ve Parametre doğrulamasında açıklandığı gibi geçersiz parametre işleyicisini çağırır. Yürütmenin devam etmesi için izin verilirse, işlevi -1 döndürür ve olarak errnoayarlanırEINVAL.
Gereksinimler
| İşlev | Gerekli başlık | İsteğe bağlı üst bilgi |
|---|---|---|
_open |
<io.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h> |
_wopen |
<io.h> veya <wchar.h> |
<fcntl.h>, <sys\types.h>, <sys\stat.h> |
_open ve _wopen Microsoft uzantılarıdır. Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.
Kitaplıklar
C çalışma zamanı kitaplıklarının tüm sürümleri.
Örnek
// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
* named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
* for output. The files are then closed.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int fh1, fh2;
fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
// Note: _open is deprecated; consider using _sopen_s instead
if( fh1 == -1 )
perror( "Open failed on input file" );
else
{
printf( "Open succeeded on input file\n" );
_close( fh1 );
}
fh2 = _open( "CRT_OPEN.OUT",
_O_WRONLY | _O_CREAT,
_S_IREAD | _S_IWRITE ); // C4996
if( fh2 == -1 )
perror( "Open failed on output file" );
else
{
printf( "Open succeeded on output file\n" );
_close( fh2 );
}
}
Çıktı
Open succeeded on input file
Open succeeded on output file
Ayrıca bkz.
Alt düzey G/Ç
_chmod, _wchmod
_close
_creat, _wcreat
_dup, _dup2
fopen, _wfopen
_sopen, _wsopen