Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Öppnar en fil för delning. Säkrare versioner av dessa funktioner är tillgängliga: se _sopen_s, _wsopen_s.
Syntax
int _sopen(
const char *filename,
int oflag,
int shflag [,
int pmode ]
);
int _wsopen(
const wchar_t *filename,
int oflag,
int shflag [,
int pmode ]
);
Parameterar
filename
Filnamn.
oflag
Den typ av åtgärder som tillåts.
shflag
Den typ av delning som tillåts.
pmode
Behörighetsinställning.
Returvärde
Var och en av dessa funktioner returnerar en filbeskrivning för den öppnade filen.
Om filename eller oflag är en NULL pekare, eller om oflag eller shflag inte ligger inom ett giltigt värdeintervall, anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar dessa funktioner -1 och anges errno till något av följande värden.
errno värde |
Tillstånd |
|---|---|
EACCES |
Den angivna sökvägen är en katalog, eller så är filen skrivskyddad, men ett försök gjordes att öppna för skrivning. |
EEXIST |
_O_CREAT och _O_EXCL flaggor har angetts, men filename finns redan. |
EINVAL |
Ogiltigt oflag eller shflag argument. |
EMFILE |
Inga fler filbeskrivningar är tillgängliga. |
ENOENT |
Det går inte att hitta filen eller sökvägen. |
Mer information om dessa och andra returkoder finns i errno, _doserrno, _sys_errlistoch _sys_nerr.
Anmärkningar
Funktionen _sopen öppnar filen som anges av filename och förbereder filen för delad läsning eller skrivning, enligt definitionen av oflag och shflag.
_wsopen är en bred teckenversion av _sopen; filename argumentet till _wsopen är en sträng med många tecken.
_wsopen och _sopen beter sig identiskt annars.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det finns i Globalt tillstånd i CRT-.
Allmän textrutinmappning
Tchar.h rutin |
_UNICODE och _MBCS inte definierat |
_MBCS definierad |
_UNICODE definierad |
|---|---|---|---|
_tsopen |
_sopen |
_sopen |
_wsopen |
Heltalsuttrycket oflag skapas genom att en eller flera av följande manifestkonstanter kombineras, som definieras i <fcntl.h>. När två eller flera konstanter utgör argumentet oflagkombineras de med bitwise-OR-operatorn ( | ).
oflag konstant |
Beteende |
|---|---|
_O_APPEND |
Flyttar filpekaren till slutet av filen före varje skrivåtgärd. |
_O_BINARY |
Öppnar filen i binärt (oöversatt) läge. (Se fopen en beskrivning av binärt läge.) |
_O_CREAT |
Skapar en fil och öppnar den för skrivning. Har ingen effekt om filen som anges av filename finns. Argumentet pmode krävs när _O_CREAT anges. |
_O_CREAT | _O_SHORT_LIVED |
Skapar en fil som tillfällig och töms om möjligt inte till disk. Argumentet pmode krävs när _O_CREAT anges. |
_O_CREAT | _O_TEMPORARY |
Skapar en fil som tillfällig. filen tas bort när den sista filbeskrivningen stängs. Argumentet pmode krävs när _O_CREAT anges. För att bevara äldre beteende för appkompatibilitet hindras inte andra processer från att ta bort den här filen. |
_O_CREAT | _O_EXCL |
Returnerar ett felvärde om en fil som anges av filename finns. Gäller endast när det används med _O_CREAT. |
_O_NOINHERIT |
Förhindrar att en delad filbeskrivning skapas. |
_O_RANDOM |
Anger att cachelagring är optimerat för, men inte begränsat till, slumpmässig åtkomst från disk. |
_O_RDONLY |
Öppnar en fil för endast läsning. Det går inte att ange med _O_RDWR eller _O_WRONLY. |
_O_RDWR |
Öppnar en fil för både läsning och skrivning. Det går inte att ange med _O_RDONLY eller _O_WRONLY. |
_O_SEQUENTIAL |
Anger att cachelagring är optimerat för, men inte begränsat till, sekventiell åtkomst från disk. |
_O_TEXT |
Öppnar en fil i läget ANSI-text (översatt). Mer information finns i Text- och binärlägesfilen I/O och fopen. |
_O_TRUNC |
Öppnar en fil och trunkerar den till noll längd. filen måste ha skrivbehörighet. Det går inte att ange med _O_RDONLY.
_O_TRUNC används med _O_CREAT öppnar en befintlig fil eller skapar en fil.
Not: Flaggan _O_TRUNC förstör innehållet i den angivna filen. |
_O_WRONLY |
Öppnar en fil för endast skrivning. Det går inte att ange med _O_RDONLY eller _O_RDWR. |
_O_U16TEXT |
Öppnar en fil i Unicode UTF-16-läge. |
_O_U8TEXT |
Öppnar en fil i Unicode UTF-8-läge. |
_O_WTEXT |
Öppnar en fil i Unicode-läge. |
Om du vill ange filåtkomstläget måste du ange antingen _O_RDONLY, _O_RDWReller _O_WRONLY. Det finns inget standardvärde för åtkomstläget.
När en fil öppnas i Unicode-läge med hjälp _O_WTEXTav indatafunktionerna , _O_U8TEXTeller _O_U16TEXTöversätter indata som läses från filen till UTF-16-data som lagras som typ wchar_t. Funktioner som skriver till en fil som öppnas i Unicode-läge förväntar sig buffertar som innehåller UTF-16-data som lagras som typ wchar_t. Om filen kodas som UTF-8 översätts UTF-16-data till UTF-8 när den skrivs. Filens UTF-8-kodade innehåll översätts till UTF-16 när den läses. Ett försök att läsa eller skriva ett udda antal byte i Unicode-läge orsakar ett parameterverifieringsfel. Om du vill läsa eller skriva data som lagras i programmet som UTF-8 använder du ett text- eller binärfilläge i stället för ett Unicode-läge. Du ansvarar för all nödvändig kodningsöversättning.
Om _sopen anropas med _O_WRONLY | _O_APPEND (tilläggsläge) och _O_WTEXT, _O_U16TEXTeller _O_U8TEXT, försöker den först öppna filen för att läsa och skriva, läsa bommen och sedan öppna den för endast skrivning. Om det inte går att öppna filen för läsning och skrivning öppnas filen endast för skrivning och använder standardvärdet för unicode-lägesinställningen.
Argumentet shflag är ett konstant uttryck som består av en av följande manifestkonstanter, som definieras i <share.h>.
shflag konstant |
Beteende |
|---|---|
_SH_DENYRW |
Nekar läs- och skrivåtkomst till en fil. |
_SH_DENYWR |
Nekar skrivåtkomst till en fil. |
_SH_DENYRD |
Nekar läsbehörighet till en fil. |
_SH_DENYNO |
Tillåter läs- och skrivåtkomst. |
Argumentet pmode krävs endast när _O_CREAT anges. Om filen inte finns pmode anger du filens behörighetsinställningar, som anges när den nya filen stängs första gången. Annars pmode ignoreras.
pmode är ett heltalsuttryck som innehåller en eller båda manifestkonstanterna _S_IWRITE och _S_IREAD, som definieras i <sys\stat.h>. När båda konstanterna anges kombineras de med bitwise-OR-operatorn. Innebörden av pmode är följande.
pmode |
Innebörd |
|---|---|
_S_IREAD |
Endast läsning tillåten. |
_S_IWRITE |
Skrivning tillåts. (I praktiken tillåter läsning och skrivning.) |
_S_IREAD | _S_IWRITE |
Läsning och skrivning tillåts. |
Om skrivbehörighet inte ges är filen skrivskyddad. I Windows-operativsystemet är alla filer läsbara. det går inte att ge skrivskyddad behörighet. Därför är lägena _S_IWRITE och _S_IREAD | _S_IWRITE likvärdiga.
_sopen tillämpar den aktuella filbehörighetsmasken pmode på innan behörigheterna anges. Mer information finns i _umask.
Kravspecifikation
| Funktion | Obligatoriskt huvud | Valfritt sidhuvud |
|---|---|---|
_sopen |
<io.h> |
<fcntl.h>, <sys\types.h>, , <sys\stat.h><share.h> |
_wsopen |
<io.h> eller <wchar.h> |
<fcntl.h>, <sys\types.h>, , <sys\stat.h><share.h> |
Mer kompatibilitetsinformation finns i Kompatibilitet.
Exempel
Se exemplet för _locking.
Se även
Lågnivå-I/O
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen