Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megnyitja a fájlt. Ezek a függvények elavultak, mert biztonságosabb verziók érhetők el; lásd :_sopen_s_wsopen_s .
Szemantika
int _open(
const char *filename,
int oflag [,
int pmode]
);
int _wopen(
const wchar_t *filename,
int oflag [,
int pmode]
);
Paraméterek
filename
Fájlnév.
oflag
Az engedélyezett műveletek típusa.
pmode
Engedély mód.
Visszaadott érték
Ezek a függvények egy fájlleírót ad vissza a megnyitott fájlhoz. A -1 visszatérési értéke hibát jelez; ebben az esetben errno a következő értékek egyikére van beállítva.
errno érték |
Állapot |
|---|---|
EACCES |
Írásvédett fájlt próbált megnyitni, a fájlmegosztási mód nem engedélyezi a megadott műveleteket, vagy a megadott elérési út egy könyvtár. |
EEXIST |
_O_CREAT és _O_EXCL a megadott, de filename már létező jelzők. |
EINVAL |
Érvénytelen oflag vagy pmode argumentum. |
EMFILE |
Nincs több fájlleíró (túl sok fájl van megnyitva). |
ENOENT |
A fájl vagy elérési út nem található. |
További információ ezekről és az egyéb visszatérési kódokról: errno, _doserrno, _sys_errlistés _sys_nerr.
Megjegyzések
A _open függvény megnyitja a megadott filename fájlt, és előkészíti azt olvasásra vagy írásra a megadott módon oflag.
_wopen
_opena (z) ; az filename argumentum _wopen egy széles karakterből álló sztring.
_wopen és _open másképp ugyanúgy viselkedik.
Általános szöveges rutinleképezések
<tchar.h> rutin |
_UNICODE és _MBCS nincs definiálva |
_MBCS definiálva |
_UNICODE definiálva |
|---|---|---|---|
_topen |
_open |
_open |
_wopen |
oflag az alábbi jegyzékállandók vagy állandó kombinációk közül egy vagy több egész számból álló kifejezés, amely a következőben <fcntl.h>van definiálva: .
oflag konstans |
Magatartás |
|---|---|
_O_APPEND |
Minden írási művelet előtt vigye a fájlmutatót a fájl végére. |
_O_BINARY |
Megnyitja a fájlt bináris (nem lefordított) módban. (Lásd fopen a bináris mód leírását.) |
_O_CREAT |
Létrehoz egy fájlt, és megnyitja az íráshoz. Nincs hatása, ha a megadott filename fájl létezik. Az pmode argumentum megadása kötelező _O_CREAT . |
_O_CREAT | _O_SHORT_LIVED |
Ideiglenesként hoz létre egy fájlt, és ha lehetséges, nem öblíti le a lemezt. Az pmode argumentum megadása kötelező _O_CREAT . |
_O_CREAT | _O_TEMPORARY |
Ideiglenes fájl létrehozása; a fájl az utolsó fájlleíró bezárásakor törlődik. Az pmode argumentum megadása kötelező _O_CREAT . Az alkalmazáskompatibilitás örökölt viselkedésének megőrzése érdekében más folyamatok nem tiltják le a fájl törlését. |
_O_CREAT | _O_EXCL |
Hibaértéket ad vissza, ha létezik egy megadott filename fájl. Csak akkor érvényes, ha a _O_CREAT. |
_O_NOINHERIT |
Megakadályozza a megosztott fájlleíró létrehozását. |
_O_RANDOM |
Azt adja meg, hogy a gyorsítótárazás a lemezről való véletlenszerű hozzáférésre van optimalizálva, de nem korlátozva. |
_O_RDONLY |
Csak olvasásra szolgáló fájlt nyit meg. Nem adhatók meg a vagy a _O_RDWR_O_WRONLY. |
_O_RDWR |
Megnyit egy fájlt olvasáshoz és íráshoz is. Nem adhatók meg a vagy a _O_RDONLY_O_WRONLY. |
_O_SEQUENTIAL |
Megadja, hogy a gyorsítótárazás a lemezről való szekvenciális hozzáférésre van optimalizálva, de nem korlátozva. |
_O_TEXT |
Fájl megnyitása ANSI-szöveg (lefordított) módban. További információ: Szöveg és bináris módú fájl I/O és fopen. |
_O_TRUNC |
Megnyit egy fájlt, és nulla hosszúságúra csonkolja; a fájlnak írási engedéllyel kell rendelkeznie. Nem adható meg a _O_RDONLY.
_O_TRUNC egy meglévő fájl megnyitásához _O_CREAT vagy egy fájl létrehozásához használható.
Jegyzet: A _O_TRUNC jelző megsemmisíti a megadott fájl tartalmát. |
_O_WRONLY |
Csak írásra szolgáló fájlt nyit meg. Nem adhatók meg a vagy a _O_RDONLY_O_RDWR. |
_O_U16TEXT |
Fájl megnyitása Unicode UTF-16 módban. |
_O_U8TEXT |
Fájl megnyitása Unicode UTF-8 módban. |
_O_WTEXT |
Fájl megnyitása Unicode módban. |
A fájlelérési mód megadásához meg kell adnia _O_RDONLYaz , _O_RDWRvagy _O_WRONLYa . A hozzáférési módnak nincs alapértelmezett értéke.
Ha _O_WTEXT egy fájl olvasásra való megnyitására szolgál, beolvassa a fájl elejét, _open és egy bájtsorrend-jelet (BOM) keres. BOM esetén a rendszer UTF-8 vagy UTF-16LE formátumban kezeli a fájlt az anyagjegyzéktől függően. Ha nincs BOM, a fájl ANSI-ként lesz kezelve. Ha egy fájl írásra van megnyitva az UTF-16 használatával _O_WTEXT, az UTF-16 lesz használatban. A korábbi beállítástól vagy bájtsorrendtől függetlenül a _O_U8TEXT rendszer mindig UTF-8-ként nyitja meg a fájlt, használat esetén _O_U16TEXT a fájl mindig UTF-16-ként nyílik meg.
Ha egy fájl Unicode módban _O_WTEXTvan megnyitva, _O_U8TEXT_O_U16TEXTa bemeneti függvények a fájlból beolvasott adatokat UTF-16 típusú wchar_tadatokká fordítják le. A Unicode módban megnyitott fájlba író függvények olyan puffereket várnak, amelyek wchar_ttípusként tárolt UTF-16 adatokat tartalmaznak. Ha a fájl UTF-8 kódolású, akkor az UTF-16-adatok le lesznek fordítva UTF-8-ra, amikor meg van írva. A fájl UTF-8 kódolású tartalma olvasáskor UTF-16-ra lesz lefordítva. A Unicode módban páratlan számú bájt olvasására vagy írására tett kísérlet paraméterérvényesítési hibát okoz. A programban UTF-8-ként tárolt adatok olvasásához vagy írásához Unicode-mód helyett szöveg- vagy bináris fájlmódot használjon. Ön a felelős minden szükséges kódolási fordításért.
Ha _open (hozzáfűzési _O_WRONLY | _O_APPEND módban) van meghívva, és _O_WTEXT, _O_U16TEXTvagy _O_U8TEXTelőször megpróbálja megnyitni a fájlt olvasásra és írásra, olvassa el az anyagjegyzéket, majd nyissa meg újra írásra. Ha nem sikerül megnyitni a fájlt olvasásra és írásra, az csak írásra nyitja meg a fájlt, és a Unicode mód beállításának alapértelmezett értékét használja.
Ha két vagy több jegyzékállandót használ az oflag argumentum létrehozásához, az állandók a bitenkénti VAGY operátorral ( | ) vannak kombinálva. A bináris és szöveges módokkal kapcsolatos vitafórumért lásd: Szöveg és bináris módú fájl I/O.
Az pmode argumentum csak akkor kötelező, ha _O_CREAT meg van adva. Ha a fájl már létezik, pmode a rendszer figyelmen kívül hagyja.
pmode Ellenkező esetben megadja azokat a fájlengedély-beállításokat, amelyek az új fájl első bezárásakor lesznek beállítva.
_open az engedélyek beállítása előtt alkalmazza az aktuális fájlengedély-maszkot pmode . További információért lásd _umask.
pmode egy egész szám kifejezés, amely a következő jegyzékállandók egyikét vagy mindkettőt tartalmazza, amelyek a következőben <sys\stat.h>vannak definiálva: .
pmode |
Értelmezés |
|---|---|
_S_IREAD |
Csak olvasás engedélyezett. |
_S_IWRITE |
Írás engedélyezett. (Valójában engedélyezi az olvasást és az írást.) |
_S_IREAD | _S_IWRITE |
Olvasás és írás engedélyezett. |
Ha mindkét állandót megadja, a bitenkénti VAGY operátorral ( | ) csatlakozik. Windows rendszerben minden fájl olvasható; Írásvédett engedély nem érhető el. Ezért a módok _S_IWRITE és _S_IREAD | _S_IWRITE egyenértékűek.
Ha a függvény nem az egyes kombinációk valamelyikéhez _S_IREAD van megadva – _S_IWRITE még akkor is, ha egy másik operációs rendszerben érvényes pmode értéket adna pmodemeg –, vagy ha az engedélyezett oflag értékeken kívül más érték van megadva, a függvény hibakeresési módban állít elő egy állítást, és meghívja az érvénytelen paraméterkezelőt a paraméterérvényesítésben leírtak szerint. Ha a végrehajtás folytatva van, a függvény -1 ad vissza, és a következőre állítja be errno : EINVAL.
Követelmények
| Funkció | Kötelező fejléc | Nem kötelező fejléc |
|---|---|---|
_open |
<io.h> |
\ |
_wopen |
<io.h> vagy <wchar.h> |
\ |
_open és _wopen Microsoft-bővítmények. További kompatibilitási információkért lásd: Kompatibilitás.
Könyvtárak
A C futásidejű kódtárak minden verziója.
példa
// 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 );
}
}
Kimenet
Open succeeded on input file
Open succeeded on output file
Lásd még
Alacsony szintű I/O
_chmod, _wchmod
_close
_creat, _wcreat
_dup, _dup2
fopen, _wfopen
_sopen, _wsopen