Delen via


_sopen, _wsopen

Hiermee opent u een bestand voor delen. Veiligere versies van deze functies zijn beschikbaar: zie _sopen_s, _wsopen_s.

Syntaxis

int _sopen(
   const char *filename,
   int oflag,
   int shflag [,
   int pmode ]
);
int _wsopen(
   const wchar_t *filename,
   int oflag,
   int shflag [,
   int pmode ]
);

Parameterwaarden

filename
Bestandsnaam.

oflag
Het soort bewerkingen dat is toegestaan.

shflag
Het type delen is toegestaan.

pmode
Machtigingsinstelling.

Retourwaarde

Elk van deze functies retourneert een bestandsdescriptor voor het geopende bestand.

Als filename of oflag een NULL aanwijzer is, of als oflag deze shflag niet binnen een geldig bereik met waarden valt, wordt de ongeldige parameterhandler aangeroepen, zoals beschreven in parametervalidatie. Als de uitvoering mag worden voortgezet, retourneren deze functies -1 en worden ingesteld errno op een van de volgende waarden.

errno waarde Conditie
EACCES Het opgegeven pad is een map of het bestand heeft het kenmerk Alleen-lezen, maar er is geprobeerd een open-for-writing-bewerking uit te voeren.
EEXIST _O_CREAT en _O_EXCL vlaggen zijn opgegeven, maar filename bestaan al.
EINVAL Ongeldig oflag of shflag argument.
EMFILE Er zijn geen bestandsdescriptors meer beschikbaar.
ENOENT Bestand of pad is niet gevonden.

Zie , , _doserrnoen _sys_errlist_sys_nerrvoor meer informatie over deze en andere retourcodeserrno .

Opmerkingen

De _sopen functie opent het bestand dat is opgegeven door filename en bereidt het bestand voor op gedeeld lezen of schrijven, zoals gedefinieerd door oflag en shflag. _wsopen is een breedtekenversie van _sopen; het argument dat u filename wilt _wsopen gebruiken is een tekenreeks met een breed teken. _wsopen en _sopen gedraagt zich op dezelfde manier als anders.

De globale status van deze functie is standaard gericht op de toepassing. Zie Globale status in de CRT-om deze te wijzigen.

Algemene routinetoewijzingen voor tekst

Tchar.h routine _UNICODE en _MBCS niet gedefinieerd _MBCS Gedefinieerd _UNICODE Gedefinieerd
_tsopen _sopen _sopen _wsopen

De expressie oflag voor gehele getallen wordt gevormd door een of meer van de volgende manifestconstanten te combineren, die zijn gedefinieerd in <fcntl.h>. Wanneer twee of meer constanten het argument oflagvormen, worden ze gecombineerd met de operator bitwise-OR ( | ).

oflag constant Gedrag
_O_APPEND Hiermee verplaatst u de bestandswijzer vóór elke schrijfbewerking naar het einde van het bestand.
_O_BINARY Hiermee opent u het bestand in de binaire modus (niet-vertaald). (Zie fopen voor een beschrijving van de binaire modus.)
_O_CREAT Hiermee maakt u een bestand en opent u het voor schrijven. Heeft geen effect als het bestand dat is opgegeven door filename bestaat. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven.
_O_CREAT | _O_SHORT_LIVED Hiermee maakt u een bestand als tijdelijk en indien mogelijk wordt deze niet naar de schijf leeggemaakt. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven.
_O_CREAT | _O_TEMPORARY Hiermee maakt u een bestand als tijdelijk; het bestand wordt verwijderd wanneer de laatste bestandsdescriptor wordt gesloten. Het pmode argument is vereist wanneer _O_CREAT deze is opgegeven. Als u het verouderde gedrag voor app-compatibiliteit wilt behouden, kunnen andere processen dit bestand niet verwijderen.
_O_CREAT | _O_EXCL Retourneert een foutwaarde als er een bestand bestaat dat is opgegeven door filename . Is alleen van toepassing wanneer deze wordt gebruikt met _O_CREAT.
_O_NOINHERIT Hiermee voorkomt u dat een gedeelde bestandsdescriptor wordt gemaakt.
_O_RANDOM Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, willekeurige toegang vanaf schijf.
_O_RDONLY Hiermee opent u een bestand om alleen te lezen. Kan niet worden opgegeven met _O_RDWR of _O_WRONLY.
_O_RDWR Hiermee opent u een bestand voor zowel lezen als schrijven. Kan niet worden opgegeven met _O_RDONLY of _O_WRONLY.
_O_SEQUENTIAL Hiermee geeft u op dat caching is geoptimaliseerd voor, maar niet beperkt tot, sequentiële toegang vanaf schijf.
_O_TEXT Hiermee opent u een bestand in de ANSI-tekstmodus (vertaald). Zie Voor meer informatie , tekst en binaire modus bestand I/O en fopen.
_O_TRUNC Hiermee opent u een bestand en kapt u het af tot nullengte; het bestand moet schrijfmachtigingen hebben. Kan niet worden opgegeven met _O_RDONLY. _O_TRUNC gebruikt met _O_CREAT opent een bestaand bestand of maakt een bestand. Notitie: De _O_TRUNC vlag vernietigt de inhoud van het opgegeven bestand.
_O_WRONLY Hiermee opent u alleen een bestand voor schrijven. Kan niet worden opgegeven met _O_RDONLY of _O_RDWR.
_O_U16TEXT Hiermee opent u een bestand in de Unicode UTF-16-modus.
_O_U8TEXT Hiermee opent u een bestand in de Unicode UTF-8-modus.
_O_WTEXT Hiermee opent u een bestand in de Unicode-modus.

Als u de modus voor bestandstoegang wilt opgeven _O_RDONLY, moet u ofwel , _O_RDWRof _O_WRONLY. Er is geen standaardwaarde voor de toegangsmodus.

Wanneer een bestand wordt geopend in de Unicode-modus door invoerfuncties te gebruiken_O_WTEXT_O_U8TEXT, of_O_U16TEXT, vertalen invoerfuncties de gegevens die uit het bestand worden gelezen in UTF-16-gegevens die zijn opgeslagen als typewchar_t. Functies die schrijven naar een bestand dat is geopend in de Unicode-modus, verwachten buffers die UTF-16-gegevens bevatten die zijn opgeslagen als type wchar_t. Als het bestand is gecodeerd als UTF-8, worden UTF-16-gegevens omgezet in UTF-8 wanneer het wordt geschreven. De UTF-8-gecodeerde inhoud van het bestand wordt omgezet in UTF-16 wanneer deze wordt gelezen. Een poging om een oneven aantal bytes in de Unicode-modus te lezen of schrijven, veroorzaakt een parametervalidatiefout. Als u gegevens wilt lezen of schrijven die zijn opgeslagen in uw programma als UTF-8, gebruikt u een tekst- of binaire bestandsmodus in plaats van een Unicode-modus. U bent verantwoordelijk voor elke vereiste coderingsvertaling.

Als _sopen wordt aangeroepen met | _O_APPEND_O_WRONLY(toevoegmodus) en _O_WTEXT, _O_U16TEXTof_O_U8TEXT, wordt eerst geprobeerd het bestand te openen voor lezen en schrijven, de bom te lezen en vervolgens opnieuw te openen voor schrijven. Als het openen van het bestand voor lezen en schrijven mislukt, wordt het bestand alleen geopend voor schrijven en wordt de standaardwaarde gebruikt voor de instelling unicodemodus.

Het argument shflag is een constante expressie die bestaat uit een van de volgende manifestconstanten, die zijn gedefinieerd in <share.h>.

shflag constant Gedrag
_SH_DENYRW Hiermee wordt lees- en schrijftoegang tot een bestand geweigerd.
_SH_DENYWR Hiermee wordt schrijftoegang tot een bestand geweigerd.
_SH_DENYRD Weigert leestoegang tot een bestand.
_SH_DENYNO Hiermee staat u lees- en schrijftoegang toe.

Het pmode argument is alleen vereist wanneer _O_CREAT deze is opgegeven. Als het bestand niet bestaat, pmode geeft u de machtigingsinstellingen van het bestand op, die worden ingesteld wanneer het nieuwe bestand de eerste keer wordt gesloten. pmode Anders wordt dit genegeerd. pmode is een expressie met een geheel getal dat een of beide manifestconstanten _S_IWRITE bevat en _S_IREAD, die zijn gedefinieerd in <sys\stat.h>. Wanneer beide constanten worden gegeven, worden ze gecombineerd met de bitwise-OR-operator. De betekenis is pmode als volgt.

pmode Betekenis
_S_IREAD Alleen lezen is toegestaan.
_S_IWRITE Schrijven is toegestaan. (In feite staat lezen en schrijven toe.)
_S_IREAD | _S_IWRITE Lezen en schrijven toegestaan.

Als er geen schrijfmachtiging is opgegeven, heeft het bestand het kenmerk Alleen-lezen. In het Windows-besturingssysteem zijn alle bestanden leesbaar; Het is niet mogelijk om alleen-schrijvenmachtigingen te verlenen. Daarom zijn de modi _S_IWRITE en _S_IREAD | _S_IWRITE gelijkwaardig.

_sopen past het huidige masker voor bestandsmachtigingen toe op pmode voordat de machtigingen zijn ingesteld. Zie _umask voor meer informatie.

Behoeften

Functie Vereiste header Optionele koptekst
_sopen <io.h> <fcntl.h>,<sys\types.h>,<sys\stat.h>,<share.h>
_wsopen <io.h> of <wchar.h> <fcntl.h>,<sys\types.h>,<sys\stat.h>,<share.h>

Zie Compatibiliteit voor meer compatibiliteitsinformatie.

Voorbeeld

Zie het voorbeeld voor _locking.

Zie ook

I/O op laag niveau
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen