_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
System::IO::FileStream::FileStream