_open, _wopen
Bir dosyayı açar. Daha güvenli sürümleri kullanılabilir, çünkü bu işlevler kaldırılmıştır; see _sopen_s, _wsopen_s.
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şlevlerden her biri açılan dosya için bir dosya tanımlayıcısını döndürür. Dönüş değeri -1, hata durumunda gösterir errno aşağıdaki değerlerden birini ayarlanır.
EACCES
Yazma için salt okunur dosyayı açmaya çalıştı, dosya paylaşım modu belirtilen işlemleri izin vermez veya belirli bir dizin yoludur.EEXIST
_O_CREATve _O_EXCL bayrakları belirtildi, ancak filename zaten.EINVAL
Geçersiz oflag veya pmode bağımsız değişkeni.EMFILE
Daha fazla dosya tanımlayıcıları kullanılabilir (çok fazla açık dosya).ENOENT
Dosya veya yol bulunamadı.
Bunlar ve diğer dönüş kodları hakkında daha fazla bilgi için bkz: _doserrno, errno, _sys_errlist ve _sys_nerr.
Notlar
_open İşlevi tarafından belirtilen dosyayı açar filename ve dosyayı okuma veya yazma, belirtildiği gibi hazırlar oflag. _wopengeniş karakter sürümü _open; filename bağımsız değişkeni _wopen bir geniş karakter dizesidir. _wopenve _open Aksi takdirde aynı şekilde davranır.
Genel metin yordamı eşlemeleri
Tchar.h yordamına girildi |
_UNICODE ve _mbcs tanımlı değil |
Tanımlanan _mbcs |
Tanımlanan _UNICODE |
---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflagbir veya daha fazla bildirim aşağıdaki sabitlerden veya Fcntl.h içinde tanımlanan sabit birleşimleri tamsayý deyim oluşturulmuş.
_O_APPEND
Dosya işaretçisi her yazma işlemi önce dosya sonuna taşır._O_BINARY
Dosya ikili (untranslated) modunda açılır. (Bkz: fopen ikili mod açıklaması.)_O_CREAT
Oluşturur ve yazma için yeni bir dosya açar. Hiçbir etkisi dosyası tarafından belirtilen filename bulunmaktadır. pmodebağımsız değişken gereklidir _O_CREAT belirtilir._O_CREAT| _O_SHORT_LIVED
Geçici olarak bir dosya oluşturun ve mümkünse için disk temizleme değil. pmodebağımsız değişken gereklidir _O_CREAT belirtilir._O_CREAT| _O_TEMPORARY
Geçici olarak bir dosya oluşturun; son dosya tanımlayıcısı kapattığınızda dosya silinir. pmodebağımsız değişken gereklidir _O_CREAT belirtilir._O_CREAT| _O_EXCL
Dosyası tarafından belirtilen hata değerini verir filename bulunmaktadır. Yalnızca birlikte kullanıldığında geçerlidir _O_CREAT._O_NOINHERIT
Paylaşılan dosya tanımlayıcısı oluşturulmasını engeller._O_RANDOM
Önbelleğe alma için optimize edilmiş, ancak rasgele erişim için diskten sınırlı değil olduğunu belirtir._O_RDONLY
Bir dosyayı yalnızca okumak için açılır; ile tarif edilemez _O_RDWR veya _O_WRONLY._O_RDWR
Hem okuma hem de yazma için dosya açar; Bu bayrak ile belirtemezsiniz _O_RDONLY veya _O_WRONLY._O_SEQUENTIAL
Önbelleğe alma için optimize edilmiş, ancak sıralı erişim için diskten sınırlı değil olduğunu belirtir._O_TEXT
Bir dosya (çevrilmiş) metin modunda açılır. (Daha fazla bilgi için bkz: metin ve ikili mod dosya g/Ç ve fopen.)_O_TRUNC
Bir dosyayı açar ve uzunluğu sıfır kendisine keser; Dosya yazma izni olmalıdır. Bu bayrak ile belirtemezsiniz _O_RDONLY. _O_TRUNCkullanılan _O_CREAT yeni bir dosya oluşturur veya varolan bir dosyayı açar.Not
_O_TRUNC Bayrağı belirtilen dosyanın içeriğini bozar.
_O_WRONLY
Dosya sadece yazmak için açılır; ile tarif edilemez _O_RDONLY veya _O_RDWR._O_U16TEXT
Dosya Unicode utf-16 modunda açın._O_U8TEXT
Dosya Unicode utf-8 modunda açın._O_WTEXT
Dosya Unicode modunda açın.
Dosya erişim modunu belirtmek için ya da belirtmelisiniz _O_RDONLY, _O_RDWR, veya _O_WRONLY. Erişim modu için varsayılan değer yoktur.
_O_WTEXT Okumak, bir dosyayı açmak için kullanılan _open dosya ve bayt sırası işareti (bom) için onay başlangıcını okur. Bir ürün Reçetesi ise, dosyanın utf-8 veya utf-16LE ürün Reçetesine bağlı olarak kabul edilir. Hiçbir bom varsa, dosyayı ANSI kabul edilir. Ne zaman bir dosya açıldığında kullanarak yazmak için _O_WTEXT, utf-16 kullanılır. _O_UTF8 Olan kullanıldığında, dosya her zaman utf-8 olarak açılır ve _O_UTF16 olan kullanıldığında, dosya her zaman utf-16 önceki herhangi bir ayar veya bayt düzeni işareti bakılmaksızın açılır.
_open Çağrılır _O_WRONLY|_O_APPEND (ekleme modu) ve _O_WTEXT, _O_U16TEXT, veya _O_U8TEXT, ilk çalýþýlýr okuma ve yazma, dosyayı açmak ürün Reçetesi, daha sonra yalnızca yazmak için yeniden açın. Okuma ve yazma hataları için dosyayı açıp, sadece yazmak için dosyayı açın ve varsayılan değeri Unicode modu ayarını kullanın.
Ne zaman iki veya daha fazla bildirim sabitleri kullanılır forma oflag bağımsız değişkeni, sabitlerin Bitsel or işlecini () ile birleştirilir |). İkili ve metin modları tartışmak için bkz: metin ve ikili mod dosya g/Ç.
pmode Gerekli olmayan bağımsız değişken yalnızca _O_CREAT belirtilir. Dosya zaten varsa, pmode göz ardı edilir. Aksi halde, pmode ilk kez yeni dosya kapatıldığında, ayarlanan dosya izin ayarlarını belirtir. _openGeçerli dosya izni maske uygulanır pmode izinlerini ayarlamadan önce (daha fazla bilgi için bkz: _umask). pmodebirini veya her ikisini SYS\Stat.h aşağıdaki bildirim sabitler, tamsayý deyim içeren.
_S_IREAD
Yalnızca okuma izni._S_IWRITE
İzin verilen yazı (okuma ve yazma etkin bir şekilde verir)._S_IREAD | _S_IWRITE
Okuma ve yazma izni.
Her iki sabitleri verildiğinde, bunlar katılmış Bitsel or işlecini () ile |). Windows NT, salt yazma izni yok olacak tüm dosyalar okunabilir,; Bu nedenle modları _S_IWRITE ve**_S_IREAD** | _S_IWRITEeşdeğerdir.
Yukarıdakilerin dışında bir değer için belirtilmiş olup olmadığını pmode (geçerli bir belirtirdiniz bile pmode başka bir işletim sisteminde) veya izin verilen dışında herhangi bir değer oflag değer belirtilirse, işlev hata ayıklama modunda bir onaylama işlemi oluşturur ve açıklandığı gibi geçersiz bir parametre işleyiciyi çağırır Parametre doğrulama. Yürütülmesine devam etmek için ayarlar ve iþlev döndüðünde -1 veriliyorsa, errno için EINVAL.
Gereksinimler
Yordamı |
Gerekli başlık |
İsteğe bağlı bir üstbilgi |
---|---|---|
_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> |
Daha fazla uyumluluk bilgileri için bkz: Uyumluluk giriş.
Kitaplıkları
Tüm sürümleri c çalışma zamanı kitaplıkları.
Ö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
.NET Framework Eşdeğeri
System::IO::FileStream::FileStream