_sopen
, _wsopen
Otwiera plik do udostępniania. Dostępne są bardziej bezpieczne wersje tych funkcji: zobacz _sopen_s
, _wsopen_s
.
Składnia
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
Dozwolony rodzaj operacji.
shflag
Rodzaj udostępniania jest dozwolony.
pmode
Ustawienie uprawnień.
Wartość zwracana
Każda z tych funkcji zwraca deskryptor plików dla otwartego pliku.
Jeśli filename
lub oflag
jest wskaźnikiem NULL
lub jeśli oflag
lub shflag
nie znajduje się w prawidłowym zakresie wartości, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Walidacja parametru. Jeśli wykonanie może kontynuować, te funkcje zwracają wartość -1 i ustawiają errno
jedną z następujących wartości.
errno wartość |
Stan |
---|---|
EACCES |
Podana ścieżka jest katalogiem lub plik jest tylko do odczytu, ale podjęto próbę operacji otwierania do zapisu. |
EEXIST |
_O_CREAT i _O_EXCL określono flagi, ale filename już istnieje. |
EINVAL |
Nieprawidłowy oflag lub shflag argument. |
EMFILE |
Nie są dostępne deskryptory plików. |
ENOENT |
Nie można odnaleźć pliku lub ścieżki. |
Aby uzyskać więcej informacji na temat tych i innych kodów powrotnych, zobacz errno
, _doserrno
, _sys_errlist
i _sys_nerr
.
Uwagi
Funkcja _sopen
otwiera plik określony przez filename
program i przygotowuje plik do wspólnego odczytu lub zapisu, zgodnie z definicją i oflag
shflag
. _wsopen
jest wersją szerokoznakową ; _sopen
argument to filename
_wsopen
ciąg o szerokim znaku. _wsopen
i _sopen
zachowywać się identycznie inaczej.
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby go zmienić, zobacz Stan globalny w CRT.
Mapowania procedur tekstu ogólnego
Tchar.h rutyna |
_UNICODE i _MBCS niezdefiniowane |
_MBCS zdefiniowany |
_UNICODE zdefiniowany |
---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
Wyrażenie oflag
liczby całkowitej jest tworzone przez połączenie co najmniej jednej z następujących stałych manifestu, które są zdefiniowane w pliku <fcntl.h>
. Gdy co najmniej dwie stałe tworzą argument oflag
, są one łączone z operatorem bitowym OR ( |
).
oflag stały |
Zachowanie |
---|---|
_O_APPEND |
Przenosi wskaźnik pliku na koniec pliku przed każdą operacją zapisu. |
_O_BINARY |
Otwiera plik w trybie binarnym (nieprzetłumaczonym). (Zobacz fopen opis trybu binarnego). |
_O_CREAT |
Tworzy plik i otwiera go do zapisu. Nie ma wpływu, jeśli plik określony przez filename istnieje. Argument pmode jest wymagany, gdy _O_CREAT jest określony. |
_O_CREAT | _O_SHORT_LIVED |
Tworzy plik jako tymczasowy, a jeśli to możliwe, nie jest opróżniany na dysk. Argument pmode jest wymagany, gdy _O_CREAT jest określony. |
_O_CREAT | _O_TEMPORARY |
Tworzy plik jako tymczasowy; plik jest usuwany po zamknięciu ostatniego deskryptora plików. Argument pmode jest wymagany, gdy _O_CREAT jest określony. Aby zachować starsze zachowanie w celu zachowania zgodności aplikacji, inne procesy nie mogą usuwać tego pliku. |
_O_CREAT | _O_EXCL |
Zwraca wartość błędu, jeśli plik określony przez filename istnieje. Stosuje się tylko wtedy, gdy jest używany z _O_CREAT . |
_O_NOINHERIT |
Zapobiega tworzeniu deskryptora udostępnionego pliku. |
_O_RANDOM |
Określa, że buforowanie jest zoptymalizowane pod kątem, ale nie ogranicza się do losowego dostępu z dysku. |
_O_RDONLY |
Otwiera plik tylko do odczytu. Nie można określić za pomocą _O_RDWR polecenia lub _O_WRONLY . |
_O_RDWR |
Otwiera plik do odczytu i zapisu. Nie można określić za pomocą _O_RDONLY polecenia lub _O_WRONLY . |
_O_SEQUENTIAL |
Określa, że buforowanie jest zoptymalizowane pod kątem, ale nie ogranicza się do sekwencyjnego dostępu z dysku. |
_O_TEXT |
Otwiera plik w trybie tekstowym ANSI (przetłumaczonym). (Aby uzyskać więcej informacji, zobacz Pliki we/ wy i pliki trybu binarnego i tekstowego oraz fopen .) |
_O_TRUNC |
Otwiera plik i obcina go do zerowej długości; plik musi mieć uprawnienia do zapisu. Nie można określić za pomocą polecenia _O_RDONLY . _O_TRUNC używany z _O_CREAT otwiera istniejący plik lub tworzy plik. Uwaga: flaga _O_TRUNC niszczy zawartość określonego pliku. |
_O_WRONLY |
Otwiera plik do zapisywania tylko. Nie można określić za pomocą _O_RDONLY polecenia 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ć wartość _O_RDONLY
, _O_RDWR
lub _O_WRONLY
. Nie ma wartości domyślnej dla trybu dostępu.
Gdy plik jest otwierany w trybie Unicode przy użyciu _O_WTEXT
funkcji wejściowych , _O_U8TEXT
lub _O_U16TEXT
, tłumaczy dane odczytywane z pliku na dane UTF-16 przechowywane jako typ wchar_t
. Funkcje zapisu w pliku otwartym w trybie Unicode oczekują zawierających dane UTF-16 przechowywane jako typ wchar_t
. Jeśli plik jest zakodowany jako UTF-8, dane UTF-16 są tłumaczone na utF-8 podczas zapisywania. Zawartość zakodowana w formacie UTF-8 jest tłumaczona na kodOWANIE UTF-16 podczas jego odczytywania. Próba odczytania lub zapisania nieparzystej liczby bajtów w trybie Unicode powoduje błąd weryfikacji parametru. Aby odczytywać lub zapisywać dane przechowywane w programie jako UTF-8, użyj trybu pliku tekstowego lub binarnego zamiast trybu Unicode. Odpowiadasz za każde wymagane tłumaczenie kodowania.
Jeśli _sopen
jest wywoływany z _O_WRONLY
_O_APPEND
| (tryb dołączania) i _O_WTEXT
_O_U16TEXT
, lub _O_U8TEXT
, najpierw próbuje otworzyć plik do odczytu i zapisu, przeczytaj BOM, a następnie otwórz go ponownie tylko do zapisu. Jeśli otwarcie pliku do odczytu i zapisu zakończy się niepowodzeniem, spowoduje to otwarcie pliku tylko do zapisu i użycie wartości domyślnej dla ustawienia trybu Unicode.
Argument shflag
jest wyrażeniem stałym składającym się z jednej z następujących stałych manifestu, które są zdefiniowane w pliku <share.h>
.
shflag stały |
Zachowanie |
---|---|
_SH_DENYRW |
Odmawia dostępu do odczytu i zapisu do pliku. |
_SH_DENYWR |
Odmawia dostępu do zapisu do pliku. |
_SH_DENYRD |
Odmawia dostępu do odczytu do pliku. |
_SH_DENYNO |
Zezwala na dostęp 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ń pliku, które są ustawiane po pierwszym zamknięciu nowego pliku. pmode
W przeciwnym razie jest ignorowany. pmode
to wyrażenie całkowite, które zawiera jedną lub obie stałe manifestu _S_IWRITE
i _S_IREAD
, które są zdefiniowane w elemecie <sys\stat.h>
. Po podaniu obu stałych są one łączone z operatorem bitowym OR. Znaczenie pmode
jest następujące.
pmode |
Znaczenie |
---|---|
_S_IREAD |
Dozwolone jest tylko odczytywanie. |
_S_IWRITE |
Dozwolone pisanie. (W efekcie zezwala na odczytywanie i zapisywanie). |
_S_IREAD | _S_IWRITE |
Dozwolone jest odczytywanie i zapisywanie. |
Jeśli nie podano uprawnień do zapisu, plik jest tylko do odczytu. W systemie operacyjnym Windows wszystkie pliki są czytelne; Nie można nadać uprawnień tylko do zapisu. W związku z tym tryby _S_IWRITE
i _S_IREAD | _S_IWRITE
są równoważne.
_sopen
stosuje bieżącą maskę uprawnień do pliku przed pmode
ustawieniem uprawnień. Aby uzyskać więcej informacji, zobacz _umask
.
Wymagania
Function | Wymagany nagłówek | Opcjonalny nagłówek |
---|---|---|
_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 o zgodności, zobacz Zgodność.
Przykład
Zobacz przykład dla elementu _locking
.
Zobacz też
We/Wy niskiego poziomu
_close
_creat
, _wcreat
fopen
, _wfopen
_fsopen
, _wfsopen
_open
, _wopen