Udostępnij za pośrednictwem


_sopen, _wsopen

Otwiera plik do udostępniania.Bezpieczniejsze wersje te funkcje są dostępne; see _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
    Typ operacji dozwolone.

  • shflag
    Typ udostępnianie dozwolone.

  • pmode
    Ustawienie uprawnienia.

Wartość zwracana

Każda z tych funkcji zwraca deskryptor pliku do otwartego pliku.

Jeśli filename lub oflag jest NULL wskaźnik, lub jeśli oflag lub shflag jest nie w ramach prawidłowy zakres wartości, nieprawidłowy parametr wywoływana jest funkcja obsługi, zgodnie z opisem w Sprawdzanie poprawności parametru.Jeśli wykonanie może kontynuować, funkcje te zwracają wartość -1 i errno do jednego z następujących wartości.

  • EACCES
    Ścieżka jest katalogu, lub plik jest tylko do odczytu, ale dokonano próby operacji otwartego na piśmie.

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

  • EINVAL
    Nieprawidłowy oflag lub shflag argument.

  • EMFILE
    Nie więcej deskryptorów plików dostępne.

  • 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

_sopen Funkcja otwiera w pliku określonym przez filename i przygotowuje plik do udostępnionego czytania lub pisania, zgodnie z definicją oflag i shflag._wsopenjest to wersja szerokich znaków _sopen; filename argument _wsopen jest łańcuch szerokich znaków._wsopeni _sopen zachowują się identycznie inaczej.

Tekst rodzajowy rutynowych mapowania

Procedura TCHAR.h

_UNICODE i _MBCS nie zdefiniowane

_MBCS, definicja

_UNICODE, definicja

_tsopen

_sopen

_sopen

_wsopen

Wyrażenie liczby całkowitej oflag jest utworzona przez łączenie jednego lub więcej z następujących stałych manifestu, zdefiniowane w pliku Fcntl.h.Kiedy dwa lub więcej stałych tworzą argument oflag, są one połączone z (operatory OR, operator | ).

  • _O_APPEND
    Zmiana wskaźnika pliku na końcu 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.pmode Argument 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.pmode Argument 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.pmode Argument jest wymagany, gdy _O_CREAT jest określony.

  • _O_CREAT| _O_EXCL
    Zwraca wartość błędu, jeśli w pliku określonym 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 przede wszystkim na 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ć z _O_RDONLY lub _O_WRONLY.

  • _O_SEQUENTIAL
    Określa przede wszystkim dostęp sekwencyjny 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 _sopen 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.

Argument shflag jest wyrażenie stałe, składający się z jednej z następujących stałych manifestu, określonych w Share.h.

  • _SH_DENYRW
    Uprawnienie Odczyt i zapis do pliku.

  • _SH_DENYWR
    Uprawnienie do zapisu w pliku.

  • _SH_DENYRD
    Uprawnienie do odczytu pliku.

  • _SH_DENYNO
    Zezwolenia na uprawnienia odczytu i zapisu.

pmode Wymagany jest argument, tylko wtedy, gdy jeden Określa _O_CREAT.Jeśli plik nie istnieje, pmode określa ustawienia uprawnień plików, które są ustawiane podczas nowy plik zostanie zamknięty po raz pierwszy.W przeciwnym razie pmode jest ignorowana.pmodeWyrażenie liczby całkowitej, zawierający jedną lub obie z manifestu stałych jest _S_IWRITE i _S_IREAD, określonych w SYS\Stat.h.Podano zarówno stałych, są połączone z operatorem logiczną lub.Znaczenie pmode jest w następujący sposób.

  • _S_IWRITE
    Dozwolone pisania.

  • _S_IREAD
    Dozwolone czytania.

  • _S_IREAD | _S_IWRITE
    Czytanie i pisanie dozwolone.

Jeśli uprawnienie do zapisu nie jest podany, plik jest tylko do odczytu.W systemie operacyjnym Windows wszystkie pliki są czytelne; nie jest możliwe nadać uprawnienia tylko do zapisu.W ten sposób, tryby _S_IWRITE i _S_IREAD | _S_IWRITE są równoważne.

_sopenstosuje się bieżącą maskę uprawnień do pliku, aby pmode przed ustawieniem uprawnienia (zobacz _umask).

Wymagania

Rozpoczęto wykonywanie procedury

Wymaganego nagłówka

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>

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

Przykład

Zobacz przykład dla _locking.

Odpowiednik w programie .NET Framework

Nie dotyczy. Aby wywołać standardowych funkcji C, należy użyć PInvoke. Aby uzyskać więcej informacji, zobacz Przykłady wywołać platformy.

Zobacz też

Informacje

Niskiego poziomu we/wy

_close

_creat, _wcreat

fopen, _wfopen

_fsopen, _wfsopen

_open, _wopen