Udostępnij za pośrednictwem


_open, _wopen

Otwiera plik.Funkcje te są przestarzałe ponieważ bezpieczniejsze wersje są dostępne; see _sopen_s, _wsopen_s.

int _open(
   const char *filename,
   int oflag [,
   int pmode] 
);
int _wopen(
   const wchar_t *filename,
   int oflag [,
   int pmode] 
);

Parametry

  • filename
    Nazwa pliku.

  • oflag
    Typ operacji dozwolone.

  • pmode
    Tryb uprawnień.

Wartość zwracana

Każda z tych funkcji zwraca deskryptor pliku do otwartego pliku.Zwracana wartość wynosząca -1 wskazuje na błąd, w którym to przypadku errno jest ustawiona na jeden z następujących wartości.

  • EACCES
    Próbował otworzyć plik tylko do odczytu do pisania, tryb udostępniania pliku zezwala na określonych operacji lub ścieżka jest katalogu.

  • EEXIST
    _O_CREATi _O_EXCL flagi określone, ale filename już istnieje.

  • EINVAL
    Nieprawidłowy oflag lub pmode argument.

  • EMFILE
    Nie więcej deskryptorów plików dostępnych (zbyt wiele otwartych plików).

  • ENOENT
    Plik lub nie odnaleziono ścieżki.

Aby uzyskać więcej informacji na temat tych i innych kodów powrotu, zobacz _doserrno, errno, _sys_errlist i _sys_nerr.

Uwagi

_open Funkcja otwiera w pliku określonym przez filename i przygotowuje plik do czytania lub pisania, jak określono przez oflag._wopenjest to wersja szerokich znaków _open; filename argument _wopen jest łańcuch szerokich znaków._wopeni _open zachowują się identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

Procedura TCHAR.h

_UNICODE i _MBCS nie zdefiniowane

_MBCS, definicja

_UNICODE, definicja

_topen

_open

_open

_wopen

oflagWyrażenie liczby całkowitej jest utworzona z jednego lub kilku z następujących stałych manifestu lub kombinacje stałe zdefiniowane w Fcntl.h.

  • _O_APPEND
    Przenosi wskaźnik pliku do końca pliku przed wykonaniem każdej operacji zapisu.

  • _O_BINARY
    Otwiera plik w trybie binarnym (nieprzetłumaczony).(Zobacz fopen opis tryb binarny.)

  • _O_CREAT
    Tworzy i otwiera nowy plik do zapisu.Jest ignorowany, jeżeli plik określony przez filename istnieje.pmodeargument jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT| _O_SHORT_LIVED
    Utwórz plik jako tymczasowe i jeśli to możliwe nie opróżnia na dysk.pmodeargument jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT| _O_TEMPORARY
    Utwórz plik jako tymczasowe; plik zostanie usunięty podczas ostatniej deskryptor pliku jest zamknięty.pmodeargument jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT| _O_EXCL
    Zwraca wartość błędu, jeżeli plik określony przez filename istnieje.Stosuje się tylko wtedy, gdy używana z _O_CREAT.

  • _O_NOINHERIT
    Uniemożliwia tworzenie deskryptora udostępnionego pliku.

  • _O_RANDOM
    Określa, że buforowanie jest zoptymalizowany pod kątem, ale nie są ograniczone do dostępie z dysku.

  • _O_RDONLY
    Otwiera plik do odczytu tylko; nie można określić z _O_RDWR lub _O_WRONLY.

  • _O_RDWR
    Otwiera plik do zarówno odczytu i zapisu; nie można określić tej flagi z _O_RDONLY lub _O_WRONLY.

  • _O_SEQUENTIAL
    Określa, że buforowanie jest zoptymalizowany pod kątem, ale nie są ograniczone do dostępu sekwencyjnego z dysku.

  • _O_TEXT
    Otwiera plik w trybie tekstowym (tłumaczenie).(Aby uzyskać więcej informacji, zobacz tekstu i binarny tryb We/Wy pliku i fopen.)

  • _O_TRUNC
    Otwiera plik i obcina to zero długości; Plik musi mieć uprawnienie do zapisu.Nie można określić tej flagi z _O_RDONLY._O_TRUNCużywane z _O_CREAT otwarcie istniejącego pliku lub tworzy nowy plik.

    [!UWAGA]

    _O_TRUNC Flaga niszczy zawartość określonego pliku.

  • _O_WRONLY
    Otwiera plik do zapisu tylko; nie można określić z _O_RDONLY lub _O_RDWR.

  • _O_U16TEXT
    Otwórz plik w trybie Unicode UTF-16.

  • _O_U8TEXT
    Otwórz plik w trybie Unicode UTF-8.

  • _O_WTEXT
    Otwórz plik w trybie Unicode.

Aby określić tryb dostępu do pliku, należy określić albo _O_RDONLY, _O_RDWR, lub _O_WRONLY.Nie istnieje wartość domyślną dla trybu dostępu.

Jeśli _O_WTEXT jest używany do otwierania pliku do odczytu, _open odczytuje początku pliku i sprawdź, czy znacznik porządku bajtów (BOM).W przypadku BOM-U, plik jest traktowana jako UTF-8 lub UTF-16LE, w zależności od BOM-U.Jeśli żaden BOM nie jest obecny, plik jest traktowana jako ANSI.Przy otwieraniu pliku na piśmie, za pomocą _O_WTEXT, używany jest UTF-16.Jeśli _O_UTF8 jest używana, plik zawsze jest otwierany jako UTF-8 i jeśli _O_UTF16 jest używany, plik jest zawsze otwarty jako UTF-16 niezależnie od wszelkich poprzednich znacznika kolejności ustawienie lub bajt.

Jeśli _open jest wywoływana z _O_WRONLY|_O_APPEND (tryb dołączania) i _O_WTEXT, _O_U16TEXT, lub _O_U8TEXT, go najpierw spróbować otworzyć plik do odczytu i zapisu, przeczytaj BOM, a następnie otwórz go ponownie do pisania tylko.Jeśli otwarcie pliku do odczytu i zapisu ulegnie awarii, będzie otworzyć plik do zapisu tylko i użyć wartości domyślne ustawienie trybu Unicode.

Kiedy dwa lub więcej manifestu stałe są używane do formularza oflag argument, stałe są połączone z (operatory OR, operator |).Omówienie trybów binarny i tekstu, zobacz tekstu i binarny tryb We/Wy pliku.

pmode Argument jest wymagany tylko wtedy, gdy _O_CREAT jest określony.Jeżeli plik już istnieje, pmode jest ignorowana.W przeciwnym razie pmode określa ustawienia uprawnień plików, które są ustawiane podczas nowy plik zostanie zamknięty po raz pierwszy._openstosuje się bieżącą maskę uprawnień do pliku, aby pmode przed ustawieniem uprawnienia (Aby uzyskać więcej informacji, zobacz _umask).pmodeWyrażenie liczby całkowitej jest zawierających jedną lub obie z następujących stałych manifestu, określonych w SYS\Stat.h.

  • _S_IREAD
    Dozwolone tylko odczyt.

  • _S_IWRITE
    Dozwolone w formie pisemnej (pozwala skutecznie odczytu i zapisu).

  • _S_IREAD | _S_IWRITE
    Czytanie i pisanie dozwolone.

Gdy podane są zarówno stałych, są połączone z (operatory OR, operator |).W systemie Windows NT wszystkie pliki są czytelne, więc uprawnienia tylko do zapisu nie jest dostępne; zatem tryby _S_IWRITE i**_S_IREAD** | _S_IWRITEsą równoważne.

Jeżeli określono wartość innych niż wymienione powyżej, dla pmode (nawet jeśli będzie określić prawidłowy pmode w innym systemie operacyjnym) lub wartość inną niż dozwolone oflag określonych wartości, funkcja generuje potwierdzenia w trybie debugowania i wywołuje program obsługi nieprawidłowy parametr, jak opisano w Sprawdzanie poprawności parametru.Jeśli wykonanie jest dozwolone, aby kontynuować, funkcja zwraca wartość -1 i zestawy errno do EINVAL.

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

Opcjonalne nagłówka

_open

<io.h>

<fcntl.h>, <sys/types.h>, <sys/stat.h>

_wopen

<io.h> lub <wchar.h>

<fcntl.h>, <sys/types.h>, <sys/stat.h>

Informacji dotyczących zgodności, zobacz zgodności we wprowadzeniu.

Biblioteki

Wszystkie wersje biblioteki uruchomieniowej c.

Przykład

// 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 );
   }
}

Dane wyjściowe

Open succeeded on input file
Open succeeded on output file

Odpowiednik w programie .NET Framework

Zobacz też

Informacje

Niskiego poziomu we/wy

_chmod, _wchmod

_close

_creat, _wcreat

_dup, _dup2

fopen, _wfopen

_sopen, _wsopen