Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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_errlisti _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 oflagshflag.
_wsopen jest wersją szerokoznakową ; _sopenargument 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 Tekst i plik trybu binarnego We/Wy i 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_RDWRlub _O_WRONLY. Nie ma wartości domyślnej dla trybu dostępu.
Gdy plik jest otwierany w trybie Unicode przy użyciu _O_WTEXTfunkcji wejściowych , _O_U8TEXTlub _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