Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Hiermee opent u een bestand. Deze functies zijn afgeschaft omdat er veiligere versies beschikbaar zijn; zie _sopen_s, _wsopen_s.
Syntaxis
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Parameterwaarden
filename
Bestandsnaam.
oflag
Het soort bewerkingen dat is toegestaan.
pmode
Machtigingsmodus.
Retourwaarde
Elk van deze functies retourneert een bestandsdescriptor voor het geopende bestand. Een retourwaarde van -1 geeft een fout aan; in dat geval errno is ingesteld op een van de volgende waarden.
errno waarde |
Conditie |
|---|---|
EACCES |
Er is geprobeerd om een alleen-lezenbestand te openen voor schrijven, de modus voor delen van bestanden staat de opgegeven bewerkingen niet toe of het opgegeven pad is een map. |
EEXIST |
_O_CREAT en _O_EXCL opgegeven vlaggen, maar filename bestaat al. |
EINVAL |
Ongeldig oflag of pmode argument. |
EMFILE |
Er zijn geen bestandsdescriptors meer beschikbaar (er zijn te veel bestanden geopend). |
ENOENT |
Bestand of pad niet gevonden. |
Zie , , _doserrnoen _sys_errlist_sys_nerrvoor meer informatie over deze en andere retourcodeserrno .
Opmerkingen
De _open functie opent het bestand dat is opgegeven door filename en bereidt het voor op lezen of schrijven, zoals opgegeven door oflag.
_wopen is een breedtekenversie van _open; het argument dat u filename wilt _wopen gebruiken is een tekenreeks met een breed teken.
_wopen en _open gedraagt zich op dezelfde manier als anders.
Algemene routinetoewijzingen voor tekst
<tchar.h> routine |
_UNICODE en _MBCS niet gedefinieerd |
_MBCS Gedefinieerd |
_UNICODE Gedefinieerd |
|---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflag is een geheel getalexpressie die is gevormd uit een of meer van de volgende manifestconstanten of constante combinaties, die zijn gedefinieerd in <fcntl.h>.
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.
Als _O_WTEXT wordt gebruikt om een bestand te openen voor lezen, _open leest u het begin van het bestand en controleert u op een bytevolgordemarkering (BOM). Als er een BOM is, wordt het bestand behandeld als UTF-8 of UTF-16LE, afhankelijk van de BOM. Als er geen bom aanwezig is, wordt het bestand behandeld als ANSI. Wanneer een bestand wordt geopend voor schrijven met behulp van _O_WTEXT, wordt UTF-16 gebruikt. Ongeacht een eerdere instelling of bytevolgordemarkering, als _O_U8TEXT het wordt gebruikt, wordt het bestand altijd geopend als UTF-8; als _O_U16TEXT het wordt gebruikt, wordt het bestand altijd geopend als UTF-16.
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 _open wordt aangeroepen met _O_WRONLY | _O_APPEND (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.
Wanneer twee of meer manifestconstanten worden gebruikt om het oflag argument te vormen, worden de constanten gecombineerd met de operator bitwise-OR ( | ). Zie Voor een bespreking van binaire en tekstmodi tekst en binaire modus bestand I/O.
Het pmode argument is alleen vereist wanneer _O_CREAT deze is opgegeven. Als het bestand al bestaat, pmode wordt dit genegeerd.
pmode Anders geeft u de instellingen voor bestandsmachtigingen op, die worden ingesteld wanneer het nieuwe bestand de eerste keer wordt gesloten.
_open past het huidige masker voor bestandsmachtigingen toe op pmode voordat de machtigingen zijn ingesteld. Zie _umask voor meer informatie.
pmode is een expressie met een geheel getal dat een of beide van de volgende manifestconstanten bevat, die zijn gedefinieerd in <sys\stat.h>.
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. |
Wanneer beide constanten worden gegeven, worden ze samengevoegd met de bitwise-OR-operator ( | ). In Windows zijn alle bestanden leesbaar; Alleen-schrijven-machtiging is niet beschikbaar. Daarom zijn de modi _S_IWRITE en _S_IREAD | _S_IWRITE gelijkwaardig.
Als een andere waarde dan een combinatie van _S_IREAD en _S_IWRITE is opgegeven voor pmode( zelfs als deze een geldige pmode waarde in een ander besturingssysteem zou opgeven) of als een andere waarde dan de toegestane oflag waarden is opgegeven, genereert de functie een assertie in de foutopsporingsmodus en roept de ongeldige parameterhandler aan, zoals beschreven in parametervalidatie. Als de uitvoering mag worden voortgezet, retourneert de functie -1 en wordt ingesteld errno op EINVAL.
Behoeften
| Functie | Vereiste header | Optionele koptekst |
|---|---|---|
_open |
<io.h> |
<fcntl.h>, , <sys\types.h><sys\stat.h> |
_wopen |
<io.h> of <wchar.h> |
<fcntl.h>, , <sys\types.h><sys\stat.h> |
_open en _wopen zijn Microsoft-extensies. Zie Compatibiliteit voor meer compatibiliteitsinformatie.
Bibliotheken
Alle versies van de C-runtimebibliotheken.
Voorbeeld
// crt_open.c
// compile with: /W3
/* This program uses _open to open a file
* named CRT_OPEN.C for input and a file named CRT_OPEN.OUT
* for output. The files are then closed.
*/
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <io.h>
#include <stdio.h>
int main( void )
{
int fh1, fh2;
fh1 = _open( "CRT_OPEN.C", _O_RDONLY ); // C4996
// Note: _open is deprecated; consider using _sopen_s instead
if( fh1 == -1 )
perror( "Open failed on input file" );
else
{
printf( "Open succeeded on input file\n" );
_close( fh1 );
}
fh2 = _open( "CRT_OPEN.OUT",
_O_WRONLY | _O_CREAT,
_S_IREAD | _S_IWRITE ); // C4996
if( fh2 == -1 )
perror( "Open failed on output file" );
else
{
printf( "Open succeeded on output file\n" );
_close( fh2 );
}
}
Uitvoer
Open succeeded on input file
Open succeeded on output file
Zie ook
I/O op laag niveau
_chmod, _wchmod
_close
_creat, _wcreat
_dup, _dup2
fopen, _wfopen
_sopen, _wsopen