Megosztás:


_sopen, _wsopen

Megnyitja a megosztáshoz szükséges fájlt. A függvények biztonságosabb verziói érhetők el: lásd_sopen_s: . _wsopen_s

Szemantika

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

Paraméterek

filename
Fájlnév.

oflag
Az engedélyezett műveletek típusa.

shflag
Az engedélyezett megosztás típusa.

pmode
Engedélybeállítás.

Visszaadott érték

Ezek a függvények egy fájlleírót ad vissza a megnyitott fájlhoz.

oflag Ha filename mutatóNULL, vagy ha oflagshflag nem egy érvényes értéktartományon belül, a rendszer 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, ezek a függvények -1 ad vissza, és az alábbi értékek egyikére vannak állítva errno .

errno érték Állapot
EACCES A megadott elérési út egy könyvtár, vagy a fájl írásvédett, de egy írásra nyitott műveletet kíséreltek meg.
EEXIST _O_CREAT és _O_EXCL a jelzők meg lettek adva, de filename már léteznek.
EINVAL Érvénytelen oflag vagy shflag argumentum.
EMFILE Nincs több fájlleíró.
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 _sopen függvény megnyitja a megadott filename fájlt, és előkészíti a fájlt a megosztott olvasásra vagy írásra az oflag and shflag. _wsopen _sopena (z) ; az filename argumentum _wsopen egy széles karakterből álló sztring. _wsopen és _sopen másképp ugyanúgy viselkedik.

Alapértelmezés szerint ennek a függvénynek a globális állapota hatóköre az alkalmazásra terjed ki. A módosítást a CRT globális állapotában találhatja meg.

Általános szöveges rutinleképezések

Tchar.h rutin _UNICODE és _MBCS nincs definiálva _MBCS definiálva _UNICODE definiálva
_tsopen _sopen _sopen _wsopen

Az egész szám kifejezés oflag a következő jegyzékállandók egy vagy több egyesítésével jön létre, amelyek a következőben <fcntl.h>vannak definiálva. Ha két vagy több állandó alkotja az argumentumot, azokat oflaga bitenkénti VAGY operátorral () | kombinálja a függvény.

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 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 _sopen (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.

Az argumentum shflag egy állandó kifejezés, amely a következő jegyzékállandók egyikéből áll, amelyek a következőben <share.h>vannak definiálva.

shflag konstans Magatartás
_SH_DENYRW Letiltja egy fájl olvasási és írási hozzáférését.
_SH_DENYWR Letiltja egy fájl írási hozzáférését.
_SH_DENYRD Letiltja egy fájl olvasási hozzáférését.
_SH_DENYNO Olvasási és írási hozzáférést engedélyez.

Az pmode argumentum csak akkor kötelező, ha _O_CREAT meg van adva. Ha a fájl nem létezik, pmode megadja a fájl engedélybeállításait, amelyek az új fájl első bezárásakor lesznek beállítva. Ellenkező esetben a pmode rendszer figyelmen kívül hagyja. pmode egy egész szám kifejezés, amely a jegyzékállandók _S_IWRITE egyikét vagy mindkettőt tartalmazza, és _S_IREADamely a következőben <sys\stat.h>van definiálva: . Ha mindkét állandót megadja, azokat a bitenkénti VAGY operátorral kombinálja a rendszer. Ennek jelentése pmode a következő.

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 nincs megadva írási engedély, a fájl írásvédett. A Windows operációs rendszerben minden fájl olvasható; nem lehet csak írási engedélyt adni. Ezért a módok _S_IWRITE és _S_IREAD | _S_IWRITE egyenértékűek.

_sopen 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.

Követelmények

Funkció Kötelező fejléc Nem kötelező fejléc
_sopen <io.h> <fcntl.h>, <sys\types.h>, <sys\stat.h><share.h>
_wsopen <io.h> vagy <wchar.h> <fcntl.h>, <sys\types.h>, <sys\stat.h><share.h>

További kompatibilitási információkért lásd: Kompatibilitás.

példa

Lásd a példát a _locking.

Lásd még

Alacsony szintű I/O
_close
_creat, _wcreat
fopen, _wfopen
_fsopen, _wfsopen
_open, _wopen