_sopen, _wsopen
Otwiera plik do udostępniania.Bezpieczniejsze wersje te funkcje są dostępne — zobacz _sopen_s, _wsopen_s.
int _sopen( const char *filename, int oflag, int shflag [, int pmode ] ); int _wsopen( const wchar_t *filename, int oflag, int shflag [, int pmode ] );
Parametry
filename
Nazwa pliku.oflag
Rodzaj operacji dozwolone.shflag
Rodzaj udostępnianie dozwolone.pmode
Ustawienia uprawnień.
Wartość zwracana
Każda z tych funkcji zwraca deskryptor pliku otwartego pliku.
Jeśli filename lub oflag jest NULL wskaźnik, lub, jeśli oflag lub shflag jest nie prawidłowego zakresu wartości, program obsługi nieprawidłowy parametr zostanie wywołany, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli jest dozwolone wykonywanie aby kontynuować, funkcje zwracają wartość -1 i ustawić errno do jednej z następujących wartości.
EACCES
Podana ścieżka jest katalogiem, lub plik jest tylko do odczytu, ale próbowano wykonać operację open do pisania.EEXIST
_O_CREATi _O_EXCL określono flagi, ale filename już istnieje.EINVAL
Nieprawidłowy oflag lub shflag argumentu.EMFILE
Nie więcej deskryptorów plików są dostępne.ENOENT
Nie znaleziono pliku lub ścieżkę.
Aby uzyskać więcej informacji na temat tych i innych kody powrotne, zobacz _doserrno, numer błędu, _sys_errlist i _sys_nerr.
Uwagi
_sopen Funkcji otwiera plik określony przez filename i przygotowuje pliku do udostępnionego Odczyt lub zapis, zgodnie z definicją przez oflag i shflag._wsopento wersja całego znaku _sopen; filename argument _wsopen jest ciągiem znaków sieci._wsopen i _sopen zachowują się identycznie w innych przypadkach.
Mapowania procedur zwykłego tekstu
Procedura tchar.h |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowano |
_UNICODE zdefiniowano |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
Wyrażenie liczby całkowitej oflag jest tworzony przez połączenie jedną lub więcej z następujących stałych manifestu, które są definiowane w < fcntl.h >.Jeśli co najmniej dwa stałe tworzą argument oflag, są połączone z (operator bitowe lub| ).
_O_APPEND
Powoduje przeniesienie pliku wskaźnik do końca pliku przed każdej operacji zapisu._O_BINARY
Otwiera plik w trybie binarnym (niezrozumiały).(Zobacz fopen opis binarnym.)_O_CREAT
Tworzy plik i otwiera go do zapisu.Ustawienie nie działa, jeśli plik określony przez filename istnieje.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony._O_CREAT | _O_SHORT_LIVED
Tworzy plik jako tymczasowe i jeśli jest to możliwe nie opróżnia na dysk.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony._O_CREAT | _O_TEMPORARY
Tworzy plik jako tymczasowe; plik zostanie usunięty po zamknięciu ostatnich deskryptor pliku.pmode Argumentu jest wymagany, gdy _O_CREAT jest określony._O_CREAT | _O_EXCL
Zwraca wartość błędu, jeśli określone przez plik filename istnieje.Ma zastosowanie tylko w przypadku użycia z _O_CREAT._O_NOINHERIT
Uniemożliwia tworzenie deskryptor udostępniony plik._O_RANDOM
Określa głównie RAM z dysku._O_RDONLY
Otwiera plik tylko odczytywania.Nie można określić z _O_RDWR lub _O_WRONLY._O_RDWR
Otwiera plik zarówno odczytu i zapisu.Nie można określić z _O_RDONLY lub _O_WRONLY._O_SEQUENTIAL
Określa głównie sekwencyjne dostęp z dysku._O_TEXT
Otwiera plik w trybie tekstowym (translacji).(Aby uzyskać więcej informacji, zobacz tekstu i binarny tryb operacji We/Wy i fopen.)_O_TRUNC
Otwiera plik i obcina go do zera długości; Plik musi mieć uprawnienia do zapisu.Nie można określić z _O_RDONLY._O_TRUNCużywane z _O_CREAT otwiera istniejący plik lub tworzy plik.[!UWAGA]
_O_TRUNC Flaga zniszczy zawartość określonego pliku.
_O_WRONLY
Otwiera plik do zapisywania tylko.Nie można określić z _O_RDONLY lub _O_RDWR._O_U16TEXT
Otwiera plik w trybie Unicode UTF-16._O_U8TEXT
Otwiera plik w trybie Unicode UTF-8._O_WTEXT
Otwiera plik w trybie Unicode.
Aby określić tryb dostępu do pliku, należy określić jedną _O_RDONLY, _O_RDWR, lub _O_WRONLY.Nie istnieje wartość domyślną dla trybu dostępu.
Jeśli plik jest otwarty w trybie Unicode za pomocą _O_WTEXT, _O_U8TEXT, lub _O_U16TEXT, input funkcji tłumaczenia danych, który jest odczytywany z pliku na UTF-16 dane przechowywane jako typ wchar_t.Funkcje, które zapisu w pliku otworzyć w trybie Unicode oczekuje buforów, które zawierają dane UTF-16 przechowywane jako typ wchar_t.Jeśli plik jest zakodowane jako UTF-8, UTF-16 danych jest przetłumaczyć na UTF-8, gdy jest ona zapisywana i zawartości algorytmem UTF-8 jest przetłumaczyć UTF-16 została przeczytana.Podjęto próbę odczytu lub zapisu nieparzysta liczba bajtów w trybie Unicode powoduje błąd sprawdzania poprawności parametru.Do odczytu lub zapisu danych przechowywanych w swoim programie jako UTF-8, zamiast tekstowe lub binarne tryb pliku trybu Unicode.Użytkownik jest odpowiedzialny za wszelkie wymagane tłumaczenia kodowania.
If _sopen is called with _O_WRONLY | _O_APPEND (append mode) and _O_WTEXT, _O_U16TEXT, or _O_U8TEXT, it first tries to open the file for reading and writing, read the BOM, then reopen it for writing only.W przypadku otwierania pliku do odczytu i zapisu nie powiodło się, otwiera plik do zapisywania tylko i jest używana wartość domyślna dla ustawienia trybu Unicode.
Argument shflag jest wyrażenia stałego składający się z jednego z następujących stałych manifestu, które są definiowane w < share.h >.
_SH_DENYRW
Uprawnienie odczytu i zapisu do pliku._SH_DENYWR
Uprawnienie do zapisu w pliku._SH_DENYRD
Uprawnienie do odczytu pliku._SH_DENYNO
Zezwolenia na do odczytu i zapisu.
pmode Argument jest wymagany tylko wtedy, gdy _O_CREAT jest określony.Jeśli plik nie istnieje, pmode określa ustawienia uprawnień plików, które są ustawiane podczas nowy plik musi być zamknięty po raz pierwszy.W przeciwnym razie pmode jest ignorowana.pmodeWyrażenie liczby całkowitej zawierający jedną lub obie stałych manifestu jest _S_IWRITE i _S_IREAD, które są definiowane w < sys\stat.h >.Jeśli podana jest zarówno stałych, są połączone z operatorem logiczną lub.Znaczenie pmode jest w następujący sposób.
_S_IWRITE
Zapisywanie dozwolone._S_IREAD
Odczytywanie dozwolone._S_IREAD | _S_IWRITE
Dozwolone odczytu i zapisu.
Jeśli nie podano uprawnień do zapisu, plik jest tylko do odczytu.W systemie operacyjnym Windows wszystkie pliki były czytelne; nie jest możliwe udziel tylko do zapisu.W związku z tym, tryby _S_IWRITE i _S_IREAD | _S_IWRITE są równoważne.
_sopenstosuje bieżącą maskę uprawnień pliku do pmode przed uprawnienia zostały ustawione.(Zobacz _umask.)
Wymagania
Procedura |
Wymagany nagłówek |
Opcjonalne nagłówka |
---|---|---|
_sopen |
< io.h > |
< fcntl.h >, < sys\types.h >, < sys\stat.h >, < share.h > |
_wsopen |
< io.h > lub < wchar.h > |
< fcntl.h >, < sys\types.h >, < sys\stat.h >, < share.h > |
Aby uzyskać więcej informacji na temat zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla _locking.
Odpowiednik w programie .NET Framework
Nie dotyczy. Aby wywołać standardową funkcję C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołań platformy.