Aracılığıyla paylaş


_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

Ayrıca bkz.

Başvuru

Alt düzey g/Ç

_chmod, _wchmod

_close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen