open

Autres langues

Langue: ru

Autres versions - même langue

Version: June 3, 1999 (openSuse - 09/10/07)

Autres sections - même nom

Section: 2 (Appels système)

îáú÷áîéå

open, creat -- ÏÔËÒÙÔØ É, ×ÅÒÏÑÔÎÏ, ÓÏÚÄÁÔØ ÆÁÊÌ ÉÌÉ ÕÓÔÒÏÊÓÔ×Ï

ëòáôëáñ ó÷ïäëá


#include <sys/types.h>

#include <sys/stat.h>

#include <fcntl.h>



int open(const char *pathname, int flags);

int open(const char *pathname, int flags, mode_t mode);

int creat(const char *pathname, mode_t mode);

ïðéóáîéå

óÉÓÔÅÍÎÙÊ ×ÙÚÏ× open ÐÒÅ×ÒÁÝÁÅÔ ÉÍÑ ÆÁÊÌÁ × ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ (ÎÅÂÏÌØÛÏÅ ÎÅÏÔÒÉÃÁÔÅÌØÎÏÅ ÞÉÓÌÏ, ÉÓÐÏÌØÚÕÅÍÏÅ ÐÒÉ ÐÏÓÌÅÄÕÀÝÅÍ ××ÏÄÅ-×Ù×ÏÄÅ, ÎÁÐÒÉÍÅÒ, Ó read, write, É Ô. Ð. åÓÌÉ ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× ÚÁ×ÅÒÛÁÅÔÓÑ ÕÓÐÅÛÎÏ, ×ÏÚ×ÒÁÝÅÎÎÙÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ Ñ×ÌÑÅÔÓÑ ÓÁÍÙÍ ÍÁÌÅÎØËÉÍ ÄÅÓËÒÉÐÔÏÒÏÍ, ËÏÔÏÒÙÊ ÅÝÅ ÎÅ ÏÔËÒÙÔ ÐÒÏÃÅÓÓÏÍ. ÷ ÒÅÚÕÌØÔÁÔÅ ÜÔÏÇÏ ×ÙÚÏ×Á ÐÏÑ×ÌÑÅÔÓÑ ÎÏ×ÙÊ ÏÔËÒÙÔÙÊ ÆÁÊÌ, ÎÅ ÒÁÚÄÅÌÑÅÍÙÊ ÎÉ Ó ËÁËÉÍ ÐÒÏÃÅÓÓÏÍ (ÒÁÚÄÅÌÑÅÍÙÅ ÏÔËÒÙÔÙÅ ÆÁÊÌÙ ÍÏÇÕÔ ×ÏÚÎÉËÎÕÔØ × ÒÅÚÕÌØÔÁÔÅ ÓÉÓÔÅÍÎÏÇÏ ×ÙÚÏ×Á fork(2). îÏ×ÙÊ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÂÕÄÅÔ ÏÓÔÁ×ÁÔØÓÑ ÏÔËÒÙÔÙÍ ÐÒÉ ×ÙÐÏÌÎÅÎÉÉ ÆÕÎËÃÉÉ exec(2) (ÓÍÏÔÒÉ ÏÐÉÓÁÎÉÅ fcntl(2)). õËÁÚÁÔÅÌØ × ÆÁÊÌÅ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÎÁÞÁÌÏ.

ðÁÒÁÍÅÔÒ flags~-- ÜÔÏ O_RDONLY, O_WRONLY ÉÌÉ O_RDWR, ÚÁÄÁÀÝÉÅ, ÓÏÏÔ×ÅÔÓÔ×ÅÎÎÏ, ÏÔËÒÙÔÉÅ ÆÁÊÌÁ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ, ÔÏÌØËÏ ÄÌÑ ÚÁÐÉÓÉ É ÄÌÑ ÞÔÅÎÉÑ É ÚÁÐÉÓÉ, ËÏÔÏÒÙÅ ÍÏÖÎÏ ËÏÍÂÉÎÉÒÏ×ÁÔØ Ó ÐÏÍÏÝØÀ ÌÏÇÉÞÅÓËÏÇÏ éìé Ó ÎÕÌÅÍ ÉÌÉ ÂÏÌÅÅ ÎÉÖÅÓÌÅÄÕÀÝÉÈ ÆÌÁÇÏ×:

O_CREAT
åÓÌÉ ÆÁÊÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ ÏÎ ÂÕÄÅÔ ÓÏÚÄÁÎ. ÷ÌÁÄÅÌÅà (uid) ÆÁÊÌÁ ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ × ÆÁËÔÉÞÅÓËÉÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ×ÌÁÄÅÌØÃÁ ÐÒÏÃÅÓÓÁ. çÒÕÐÐÁ (gid) ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÌÉÂÏ × ÆÁËÔÉÞÅÓËÉÊ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÐÒÏÃÅÓÓÁ ÉÌÉ ÖÅ × ÉÄÅÎÔÉÆÉËÁÔÏÒ ÇÒÕÐÐÙ ÒÏÄÉÔÅÌØÓËÏÇÏ ËÁÔÁÌÏÇÁ (ÚÁ×ÉÓÉÔ ÏÔ ÔÉÐÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ É ÆÌÁÇÏ× ÐÒÏÇÒÁÍÍÙ mount, Á ÔÁËÖÅ ÐÒÁ× ÄÏÓÔÕÐÁ Ë ÒÏÄÉÔÅÌØÓËÏÍÕ ËÁÔÁÌÏÇÕ. óÍ., ÎÁÐÒÉÍÅÒ, ÆÌÁÇÉ bsdgroups É sysvgroups × ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ ext2, ËÏÔÏÒÙÅ ÏÐÉÓÁÎÙ × mount(8)).
O_EXCL
åÓÌÉ ÉÓÐÏÌØÚÕÅÔÓÑ ÓÏ×ÍÅÓÔÎÏ Ó O_CREAT, ÔÏ ÅÓÌÉ ÆÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, ÔÏ open ÚÁ×ÅÒÛÉÔÓÑ Ó ÏÛÉÂËÏÊ. ÷ ÜÔÏÍ ËÏÎÔÅËÓÔÅ ÓÉÍ×ÏÌØÎÁÑ ÓÓÙÌËÁ ÓÕÝÅÓÔ×ÕÅÔ, ÎÅÚÁ×ÉÓÉÍÏ ÏÔ ÔÏÇÏ, ËÕÄÁ ÏÎÁ ÕËÁÚÙ×ÁÅÔ. O_EXCL ÎÅ ÒÁÂÏÔÁÅÔ ÎÁ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍÁÈ NFS, Á × ÐÒÏÇÒÁÍÍÁÈ, ÐÏÌÁÇÁÀÝÉÈÓÑ ÎÁ ÜÔÏÔ ÆÌÁÇ ÄÌÑ ÒÅÁÌÉÚÁÃÉÉ ÂÌÏËÉÒÏ×ËÉ, ×ÏÚÎÉËÎÅÔ race condition. òÅÛÅÎÉÅ ÄÌÑ ÁÔÏÍÁÒÎÏÊ ÂÌÏËÉÒÏ×ËÉ Ó ÐÏÍÏÝØÀ ÆÁÊÌÁ: ÓÏÚÄÁÔØ ÆÁÊÌ Ó ÕÎÉËÁÌØÎÙÍ ÉÍÅÎÅÍ ÎÁ ÔÏÊ ÖÅ ÓÁÍÏÊ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ (ÜÔÏ ÉÍÑ ÍÏÖÅÔ ÓÏÄÅÒÖÁÔØ, ÎÁÐÒÉÍÅÒ, ÉÍÑ ÍÁÛÉÎÙ É ÉÄÅÎÔÉÆÉËÁÔÏÒ ÐÒÏÃÅÓÓÁ), ÉÓÐÏÌØÚÏ×ÁÔØ link(2), ÞÔÏÂÙ ÓÏÚÄÁÔØ ÓÓÙÌËÕ ÎÁ ÆÁÊÌ ÂÌÏËÉÒÏ×ËÉ. åÓÌÉ link() ×ÏÚ×ÒÁÝÁÅÔ 0, ÚÎÁÞÉÔ, ÂÌÏËÉÒÏ×ËÁ ÂÙÌÁ ÕÓÐÅÛÎÏÊ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÉÓÐÏÌØÚÕÊÔÅ stat(2), ÞÔÏÂÙ ÕÂÅÄÉÔØÓÑ, ÞÔÏ ËÏÌÉÞÅÓÔ×Ï ÓÓÙÌÏË ÎÁ ÕÎÉËÁÌØÎÙÊ ÆÁÊÌ ×ÏÚÒÏÓÌÏ ÄÏ Ä×ÕÈ, ÞÔÏ ÏÐÑÔØ ÏÚÎÁÞÁÅÔ, ÞÔÏ ÂÌÏËÉÒÏ×ËÁ ÂÙÌÁ ÕÓÐÅÛÎÏÊ.
O_NOCTTY
åÓÌÉ pathname ÓÓÙÌÁÅÔÓÑ ÎÁ ÔÅÒÍÉÎÁÌØÎÏÅ ÕÓÔÒÏÊÓÔ×Ï --- ÓÍ. tty(4), --- ÔÏ ÏÎÏ ÎÅ ÓÔÁÎÅÔ ËÏÎÔÒÏÌÉÒÕÀÝÉÍ ÔÅÒÍÉÎÁÌÏÍ ÐÒÏÃÅÓÓÁ, ÄÁÖÅ ÅÓÌÉ Õ ÜÔÏÇÏ ÐÒÏÃÅÓÓÁ ÎÅÔ ÔÁËÏ×ÏÇÏ.
O_TRUNC
åÓÌÉ ÆÁÊÌ ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, Ñ×ÌÑÅÔÓÑ ÏÂÙÞÎÙÍ ÆÁÊÌÏÍ, Á ÒÅÖÉÍ ÏÔËÒÙÔÉÑ ÐÏÚ×ÏÌÑÅÔ ÚÁÐÉÓØ (ÔÏ ÂÉÛØ ÜÔÏ O_RDWR ÉÌÉ O_WRONLY), ÔÏ ÏÎ ÂÕÄÅÔ ÏÂÒÅÚÁÎ ÄÏ ÎÕÌÅ×ÏÊ ÄÌÉÎÙ. åÓÌÉ ÆÁÊÌ Ñ×ÌÑÅÔÓÑ FIFO ÉÌÉ ÕÓÔÒÏÊÓÔ×ÏÍ ÔÅÒÍÉÎÁÌÁ, ÔÏ ÆÌÁÇ O_TRUNC ÉÇÎÏÒÉÒÕÅÔÓÑ. ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÄÅÊÓÔ×ÉÅ O_TRUNC ÎÅ ÏÐÉÓÁÎÏ. (îÁ ÍÎÏÇÉÈ ×ÅÒÓÉÑÈ Linux ÜÔÏÔ ÆÌÁÇ ÂÕÄÅÔ ÉÇÎÏÒÉÒÏ×ÁÎ; ÎÁ ÄÒÕÇÉÈ ×ÅÒÓÉÑÈ ÂÕÄÅÔ ×ÏÚ×ÒÁÝÅÎÁ ÏÛÉÂËÁ.)
O_APPEND
æÁÊÌ ÏÔËÒÙ×ÁÅÔÓÑ × ÒÅÖÉÍÅ ÄÏÂÁ×ÌÅÎÉÑ. ðÅÒÅÄ ËÁÖÄÙÍ write, ÆÁÊÌÏ×ÙÊ ÕËÁÚÁÔÅÌØ ÐÅÒÅÍÅÝÁÅÔÓÑ × ËÏÎÅà ÆÁÊÌÁ, ËÁË ÅÓÌÉ ÂÙ ÉÓÐÏÌØÚÏ×ÁÌÓÑ lseek. O_APPEND ÍÏÖÅÔ ÐÒÉ×ÅÓÔÉ Ë ÐÏ×ÒÅÖÄÅÎÉÀ ÆÁÊÌÏ× ÎÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ NFS, ÅÓÌÉ ÎÅÓËÏÌØËÏ ÐÒÏÃÅÓÓÏ× ÏÄÎÏ×ÒÅÍÅÎÎÏ ÄÏÂÁ×ÌÑÀÔ ÄÁÎÎÙÅ × ÏÄÉÎ ÆÁÊÌ. üÔÏ ÐÒÏÉÓÈÏÄÉÔ ÉÚ-ÚÁ ÔÏÇÏ, ÞÔÏ NFS ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔ ÄÏÂÁ×ÌÅÎÉÅ × ÆÁÊÌ, ÐÏÜÔÏÍÕ ÑÄÒÏ ÎÁ ÍÁÛÉÎÅ-ËÌÉÅÎÔÅ ÄÏÌÖÎÏ ÜÍÕÌÉÒÏ×ÁÔØ ÜÔÕ ÐÏÄÄÅÒÖËÕ, ÞÔÏ ÎÅ ÍÏÖÅÔ ÂÙÔØ ×ÙÐÏÌÎÅÎÏ ÂÅÚ race condition.
O_NONBLOCK ÉÌÉ O_NDELAY
åÓÌÉ ×ÏÚÍÏÖÎÏ, ÔÏ ÆÁÊÌ ÏÔËÒÙ×ÁÅÔÓÑ × ÎÅÂÌÏËÉÒÕÀÝÅÍ ÒÅÖÉÍÅ. îÉ open, ÎÉ ÄÒÕÇÉÅ ÐÏÓÌÅÄÕÀÝÉÅ ÏÐÅÒÁÃÉÉ ÎÁÄ ×ÏÚ×ÒÁÝÅÎÎÙÍ ÄÅÓËÒÉÐÔÏÒÏÍ ÆÁÊÌÁ ÎÅ ÚÁÓÔÁ×ÑÔ ×ÙÚÙ×ÁÀÝÉÊ ÐÒÏÃÅÓÓ ÖÄÁÔØ. òÁÂÏÔÁ Ó ËÁÎÁÌÁÍÉ FIFO ÔÁËÖÅ ÏÐÉÓÁÎÁ × fifo(4). üÔÏÔ ÒÅÖÉÍ ÎÅ ÏÂÑÚÁÎ ËÁË-ÌÉÂÏ ÄÅÊÓÔ×Ï×ÁÔØ ÎÁ ÆÁÊÌÙ, ÎÅ Ñ×ÌÑÀÝÉÅÓÑ FIFO.
O_SYNC
æÁÊÌ ÏÔËÒÙ×ÁÅÔÓÑ × ÒÅÖÉÍÅ ÓÉÎÈÒÏÎÎÏÇÏ ××ÏÄÁ-×Ù×ÏÄÁ. ÷ÓÅ ×ÙÚÏ×Ù write ÄÌÑ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÄÅÓËÒÉÐÔÏÒÁ ÆÁÊÌÁ ÂÌÏËÉÒÕÀÔ ×ÙÚÙ×ÁÀÝÉÊ ÐÒÏÃÅÓÓ ÄÏ ÔÅÈ ÐÏÒ, ÐÏËÁ ÄÁÎÎÙÅ ÎÅ ÂÕÄÕÔ ÆÉÚÉÞÅÓËÉ ÚÁÐÉÓÁÎÙ ÏÂÏÒÕÄÏ×ÁÎÉÅÍ, ÎÁ ËÏÔÏÒÏÍ ÎÁÈÏÄÉÔÓÑ ÆÁÊÌ. ïÄÎÁËÏ ÖÅ, ÓÍÏÔÒÉ × ÒÁÚÄÅÌÅ ïçòáîéþåîéñ.
O_NOFOLLOW
åÓÌÉ pathname -- ÜÔÏ ÓÉÍ×ÏÌÉÞÅÓËÁÑ ÓÓÙÌËÁ, ÔÏ open ÚÁ×ÅÒÛÁÅÔÓÑ Ó ËÏÄÏÍ ÏÛÉÂËÉ. üÔÏ ÒÁÓÛÉÒÅÎÉÅ ÉÚ FreeBSD, ËÏÔÏÒÏÅ ÂÙÌÏ ÄÏÂÁ×ÌÅÎÏ × Linux × ×ÅÒÓÉÉ 2.1.126. ÷ÓÅ ÐÒÏÞÉÅ ÓÉÍ×ÏÌÉÞÅÓËÉÅ ÓÓÙÌËÉ × ÉÍÅÎÉ ÂÕÄÕÔ ÏÂÒÁÂÏÔÁÎÙ ËÁË ÏÂÙÞÎÏ. úÁÇÏÌÏ×ÏÞÎÙÅ ÆÁÊÌÙ ÉÚ glibc 2.0.100 É ÐÏÚÖÅ ÓÏÄÅÒÖÁÔ ÏÐÒÅÄÅÌÅÎÉÅ ÜÔÏÇÏ ÆÌÁÇÁ; ÑÄÒÁ Ó ×ÅÒÓÉÑÍÉ ÍÅÎØÛÅ, ÞÅÍ 2.1.126, ÉÇÎÏÒÉÒÕÀÔ ÜÔÏÔ ÆÌÁÇ.
O_DIRECTORY
åÓÌÉ pathname ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ, ÔÏ open ÚÁ×ÅÒÛÉÔÓÑ Ó ËÏÄÏÍ ÏÛÉÂËÉ. üÔÏÔ ÆÌÁÇ ÉÓÐÏÌØÚÕÅÔÓÑ ÔÏÌØËÏ × Linux, É ÂÙÌ ÄÏÂÁ×ÌÅÎ × ÑÄÒÅ 2.1.126, ÞÔÏÂÙ ÉÚÂÅÖÁÔØ ÐÒÏÂÌÅÍ Ó ÁÔÁËÁÍÉ ÔÉÐÁ "ÏÔËÁÚ ÏÂÓÌÕÖÉ×ÁÎÉÑ", ÅÓÌÉ opendir(2) ÂÙÌ ×ÙÚ×ÁÎ Ó ËÁÎÁÌÏÍ FIFO ÉÌÉ ÌÅÎÔÏÞÎÙÍ ÕÓÔÒÏÊÓÔ×ÏÍ. üÔÏÔ ÆÌÁÇ ÎÅ ÓÌÅÄÕÅÔ ÉÓÐÏÌØÚÏ×ÁÔØ ×ÎÅ ÒÅÁÌÉÚÁÃÉÉ opendir.
O_LARGEFILE
îÁ 32-ÂÉÔÎÙÈ ÓÉÓÔÅÍÁÈ, ÐÏÄÄÅÒÖÉ×ÁÀÝÉÈ âÏÌØÛÉÅ æÁÊÌÏ×ÙÅ óÉÓÔÅÍÙ, ÜÔÏÔ ÆÌÁÇ ÐÏÚ×ÏÌÑÅÔ ÏÔËÒÙ×ÁÔØ ÆÁÊÌÙ, ÄÌÉÎÁ ËÏÔÏÒÙÈ ÎÅ ÐÏÍÅÝÁÅÔÓÑ × 31 ÂÉÔ.

îÅËÏÔÏÒÙÅ ÉÚ ×ÙÛÅÏÐÉÓÁÎÎÙÈ ÆÌÁÇÏ× ÍÏÇÕÔ ÂÙÔØ ÉÚÍÅÎÅÎÙ ÐÏÓÌÅ ÏÔËÒÙÔÉÑ ÆÁÊÌÁ Ó ÐÏÍÏÝØÀ fctnl.

áÒÇÕÍÅÎÔ mode ÚÁÄÁÅÔ ÐÒÁ×Á ÄÏÓÔÕÐÁ, ËÏÔÏÒÙÅ ÉÓÐÏÌØÚÕÀÔÓÑ × ÓÌÕÞÁÅ ÓÏÚÄÁÎÉÑ ÎÏ×ÏÇÏ ÆÁÊÌÁ. ïÎÉ ÍÏÄÉÆÉÃÉÒÕÀÔÓÑ ÏÂÙÞÎÙÍ ÓÐÏÓÏÂÏÍ, ÉÓÐÏÌØÚÕÑ umask ÐÒÏÃÅÓÓÁ: ÐÒÁ×Á ÄÏÓÔÕÐÁ Ó×ÅÖÅÓÏÚÄÁÎÎÏÇÏ ÆÁÊÌÁ ÒÁ×ÎÙ (mode & ~umask). úÁÍÅÔØÔÅ, ÞÔÏ ÜÔÏÔ ÒÅÖÉÍ ÄÏÓÔÕÐÁ ÏÔÎÏÓÉÔÓÑ ÔÏÌØËÏ Ë ÐÏÓÌÅÄÕÀÝÉÍ ÏÂÒÁÝÅÎÉÑÍ Ë Ó×ÅÖÅÓÏÚÄÁÎÎÏÍÕ ÆÁÊÌÕ; ÓÉÓÔÅÍÎÙÊ ×ÙÚÏ× open, ËÏÔÏÒÙÊ ÓÏÚÄÁÅÔ ÎÏ×ÙÊ ÆÁÊÌ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ, ×ÐÏÌÎÅ ÍÏÖÅÔ ×ÅÒÎÕÔØ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÄÌÑ ÞÔÅÎÉÑ/ÚÁÐÉÓÉ.

îÉÖÅÓÌÅÄÕÀÝÉÅ ÓÉÍ×ÏÌÉÞÅÓËÉÅ ËÏÎÓÔÁÎÔÙ ÍÏÖÎÏ ÉÓÐÏÌØÚÏ×ÁÔØ × mode:

S_IRWXU
00700 ÐÏÌØÚÏ×ÁÔÅÌØ (×ÌÁÄÅÌÅà ÆÁÊÌÁ) ÉÍÅÅÔ ÐÒÁ×Á ÞÔÅÎÉÑ, ÚÁÐÉÓÉ É ×ÙÐÏÌÎÅÎÉÑ.
S_IRUSR (S_IREAD)
00400 ÐÏÌØÚÏ×ÁÔÅÌØ ÉÍÅÅÔ ÐÒÁ×Ï ÞÔÅÎÉÑ
S_IWUSR (S_IWRITE)
00200 ÐÏÌØÚÏ×ÁÔÅÌØ ÉÍÅÅÔ ÐÒÁ×Ï ÚÁÐÉÓÉ
S_IXUSR (S_IEXEC)
00100 ÐÏÌØÚÏ×ÁÔÅÌØ ÉÍÅÅÔ ÐÒÁ×Ï ×ÙÐÏÌÎÅÎÉÑ
S_IRWXG
00070 ÇÒÕÐÐÁ ÉÍÅÅÔ ÐÒÁ×Á ÞÔÅÎÉÑ, ÚÁÐÉÓÉ É ×ÙÐÏÌÎÅÎÉÑ
S_IRGRP
00040 ÇÒÕÐÐÁ ÉÍÅÅÔ ÐÒÁ×Ï ÞÔÅÎÉÑ
S_IWGRP
00020 ÇÒÕÐÐÁ ÉÍÅÅÔ ÐÒÁ×Ï ÚÁÐÉÓÉ
S_IXGRP
00010 ÇÒÕÐÐÁ ÉÍÅÅÔ ÐÒÁ×Ï ×ÙÐÏÌÎÅÎÉÑ
S_IRWXO
00007 ×ÓÅ ÏÓÔÁÌØÎÙÅ ÉÍÅÀÔ ÐÒÁ×Á ÞÔÅÎÉÑ, ÚÁÐÉÓÉ É ×ÙÐÏÌÎÅÎÉÑ
S_IROTH
00004 ×ÓÅ ÏÓÔÁÌØÎÙÅ ÉÍÅÀÔ ÐÒÁ×Ï ÞÔÅÎÉÑ
S_IWOTH
00002 ×ÓÅ ÏÓÔÁÌØÎÙÅ ÉÍÅÀÔ ÐÒÁ×Ï ÚÁÐÉÓÉ
S_IXOTH
00001 ×ÓÅ ÏÓÔÁÌØÎÙÅ ÉÍÅÀÔ ÐÒÁ×Ï ×ÙÐÏÌÎÅÎÉÑ

mode ×ÓÅÇÄÁ ÄÏÌÖÅÎ ÂÙÔØ ÕËÁÚÁÎ ÐÒÉ ÉÓÐÏÌØÚÏ×ÁÎÉÉ O_CREAT, ×Ï ×ÓÅÈ ÏÓÔÁÌØÎÙÈ ÓÌÕÞÁÑÈ ÜÔÏÔ ÐÁÒÁÍÅÔÒ ÉÇÎÏÒÉÒÕÅÔÓÑ.

creat ÜË×É×ÁÌÅÎÔÅÎ open Ó flags, ÒÁ×ÎÙÍÉ O_CREAT | O_WRONLY | O_TRUNC.

÷ïú÷òáýáåíïå úîáþåîéå

open É creat ×ÏÚ×ÒÁÝÁÀÔ ÎÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ ÆÁÊÌÁ, ÉÌÉ -1, ÅÓÌÉ ÐÒÏÉÚÏÛÌÁ ÏÛÉÂËÁ (× ÜÔÏÍ ÓÌÕÞÁÅ errno ÕÓÔÁÎÁ×ÌÉ×ÁÅÔÓÑ ÄÏÌÖÎÙÍ ÏÂÒÁÚÏÍ). úÁÍÅÔØÔÅ, ÞÔÏ open ÍÏÖÅÔ ÏÔËÒÙ×ÁÔØ ÆÁÊÌÙ ÕÓÔÒÏÊÓÔ×, ÎÏ creat ÎÅ ÍÏÖÅÔ ÓÏÚÄÁ×ÁÔØ ÉÈ -- ÉÓÐÏÌØÚÕÊÔÅ ÄÌÑ ÜÔÏÇÏ mknod(2).

îÁ ÆÁÊÌÏ×ÙÈ ÓÉÓÔÅÍÁÈ NFS Ó ×ËÌÀÞÅÎÎÙÍ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅÍ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÏÌØÚÏ×ÁÔÅÌÅÊ open ÍÏÖÅÔ ×ÅÒÎÕÔØ ÆÁÊÌÏ×ÙÊ ÄÅÓËÒÉÐÔÏÒ, ÎÏ, ÎÁÐÒÉÍÅÒ, read(2) ×ÅÒÎÅÔ ÏÛÉÂËÕ EACCES. üÔÏ ÉÚ-ÚÁ ÔÏÇÏ, ÞÔÏ ËÌÉÅÎÔ ×ÙÐÏÌÎÑÅÔ open, ÐÒÏ×ÅÒÑÑ ÐÒÁ×Á ÄÏÓÔÕÐÁ, ÎÏ ÐÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÉÄÅÎÔÉÆÉËÁÔÏÒÏ× ÐÒÏÉÚ×ÏÄÉÔÓÑ ÓÅÒ×ÅÒÏÍ ÐÒÉ ÚÁÐÒÏÓÁÈ ÎÁ ÞÔÅÎÉÅ É ÚÁÐÉÓØ.

åÓÌÉ ÆÁÊÌ ÔÏÌØËÏ ÞÔÏ ÓÏÚÄÁÎ, ÅÇÏ atime, ctime É mtime, Á ÔÁËÖÅ ctime É mtime ÒÏÄÉÔÅÌØÓËÏÇÏ ËÁÔÁÌÏÇÁ, ÕÓÔÁÎÏ×ÌÅÎÙ × ÔÅËÕÝÅÅ ×ÒÅÍÑ, ÷ ÐÒÏÔÉ×ÎÏÍ ÓÌÕÞÁÅ ÅÓÌÉ ÆÁÊÌ ÍÏÄÉÆÉÃÉÒÏ×ÁÎ ÉÚ-ÚÁ ÆÌÁÇÁ O_TRUNC, ÅÇÏ ÐÏÌÑ ctime É mtime ÕÓÔÁÎÁ×ÌÉ×ÁÀÔÓÑ × ÔÅËÕÝÅÅ ×ÒÅÍÑ.

ïûéâëé

EEXIST
pathname ÕÖÅ ÓÕÝÅÓÔ×ÕÅÔ, É ÂÙÌÉ ÉÓÐÏÌØÚÏ×ÁÎÙ O_CREAT É O_EXCL.
EISDIR
pathname ÓÓÙÌÁÅÔÓÑ ÎÁ ËÁÔÁÌÏÇ, Á ÔÉÐ ÄÏÓÔÕÐÁ ÐÏÄÒÁÚÕÍÅ×ÁÅÔ ÚÁÐÉÓØ.
EACCES
úÁÐÒÏÛÅÎÎÙÊ ÄÏÓÔÕÐ Ë ÆÁÊÌÕ ÎÅ ÒÁÚÒÅÛÅÎ, ÉÌÉ ÖÅ ÏÄÉÎ ÉÚ ËÁÔÁÌÏÇÏ× × pathname ÎÅ ÐÏÚ×ÏÌÑÅÔ ÐÏÉÓË (×ÙÐÏÌÎÅÎÉÅ), ÉÌÉ ÖÅ ÆÁÊÌ ÅÝÅ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ, Á ÄÏÓÔÕÐ ÄÌÑ ÚÁÐÉÓÉ × ÒÏÄÉÔÅÌØÓËÉÊ ËÁÔÁÌÏÇ ÎÅ ÒÁÚÒÅÛÅÎ. error_ENAMETOOLONG(pathname) error_ENOENT(pathname)
ENOTDIR
ëÏÍÐÏÎÅÎÔ, ÉÓÐÏÌØÚÏ×ÁÎÎÙÊ ËÁË ËÁÔÁÌÏÇ × pathname, ÔÁËÏ×ÙÍ ÎÅ Ñ×ÌÑÅÔÓÑ, ÉÌÉ ÂÙÌ ÕËÁÚÁÎ ÆÌÁÇ O_DIRECTORY, Á pathname ÎÅ Ñ×ÌÑÅÔÓÑ ËÁÔÁÌÏÇÏÍ.
ENXIO
õÓÔÁÎÏ×ÌÅÎÙ O_NONBLOCK | O_WRONLY, ÆÁÊÌ Ñ×ÌÑÅÔÓÑ ËÁÎÁÌÏÍ FIFO, ÎÏ ÎÅÔ ÐÒÏÃÅÓÓÏ×, ËÏÔÏÒÙÅ ÏÔËÒÙÌÉ ÜÔÏÔ ËÁÎÁÌ ÄÌÑ ÞÔÅÎÉÑ. ÷ÏÚÍÏÖÎÏ ÔÁËÖÅ, ÞÔÏ ÆÁÊÌ Ñ×ÌÑÅÔÓÑ ÆÁÊÌÏÍ ÕÓÔÒÏÊÓÔ×Á, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÅ ÕÓÔÒÏÊÓÔ×Ï ÎÅ ÕÓÔÁÎÏ×ÌÅÎÏ.
ENODEV
pathname ÓÓÙÌÁÅÔÓÑ ÎÁ ÆÁÊÌ ÕÓÔÒÏÊÓÔ×Á, ÎÏ ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÕÓÔÒÏÊÓÔ×Á ÎÅ ÓÕÝÅÓÔ×ÕÅÔ. (üÔÏ ÏÛÉÂËÁ × ÑÄÒÅ Linux: ÄÏÌÖÅÎ ×ÏÚ×ÒÁÝÁÔØÓÑ ENXIO.)
EROFS
pathname ÓÓÙÌÁÅÔÓÑ ÎÁ ÆÁÊÌ, ÎÁÈÏÄÑÝÉÊÓÑ ÎÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÅ, ÓÍÏÎÔÉÒÏ×ÁÎÎÏÊ ÔÏÌØËÏ ÄÌÑ ÞÔÅÎÉÑ, É ÂÙÌ ÚÁÐÒÏÛÅÎ ÄÏÓÔÕÐ ÄÌÑ ÚÁÐÉÓÉ.
ETXTBSY
pathname ÓÓÙÌÁÅÔÓÑ ÎÁ ÉÓÐÏÌÎÑÅÍÙÊ ÆÁÊÌ, ËÏÔÏÒÙÊ × ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ ÉÓÐÏÌÎÑÅÔÓÑ, É ÂÙÌ ÚÁÐÒÏÛÅÎ ÄÏÓÔÕÐ ÄÌÑ ÚÁÐÉÓÉ. error_EFAULT(pathname)
ELOOP
óÌÉÛËÏÍ ÍÎÏÇÏ ÓÉÍ×ÏÌÉÞÅÓËÉÈ ÓÓÙÌÏË ÂÙÌÏ ÐÒÏÊÄÅÎÏ ÐÒÉ ÏÂÎÁÒÕÖÅÎÉÉ pathname, ÉÌÉ ÂÙÌ ÕËÁÚÁÎ ÆÌÁÇ O_NOFOLLOW, Á pathname Ñ×ÌÑÅÔÓÑ ÓÉÍ×ÏÌÉÞÅÓËÏÊ ÓÓÙÌËÏÊ.
ENOSPC
pathname ÎÕÖÎÏ ÂÙÌÏ ÓÏÚÄÁÔØ ÎÁ ÕÓÔÒÏÊÓÔ×Å, ÎÁ ËÏÔÏÒÏÍ ÎÅ ÂÙÌÏ ÍÅÓÔÁ ÄÌÑ ÎÏ×ÏÇÏ ÆÁÊÌÁ. error_ENOMEM
EMFILE
ðÒÏÃÅÓÓ ÕÖÅ ÏÔËÒÙÌ ÍÁËÓÉÍÁÌØÎÏ ÄÏÐÕÓÔÉÍÏÅ ËÏÌÉÞÅÓÔ×Ï ÆÁÊÌÏ×.
ENFILE
äÏÓÔÉÇÎÕÔ ÐÒÅÄÅÌ ÎÁ ÍÁËÓÉÍÁÌØÎÏÅ ÏÂÝÅÅ ËÏÌÉÞÅÓÔ×Ï ÆÁÊÌÏ×, ÏÔËÒÙÔÙÈ × ÓÉÓÔÅÍÅ.

óïïô÷åôóô÷éå óôáîäáòôáí

SVr4, SVID, POSIX, X/OPEN, BSD 4.3 æÌÁÇÉ O_NOFOLLOW É O_DIRECTORY ÓÐÅÃÉÆÉÞÎÙ ÄÌÑ Linux. äÌÑ ÔÏÇÏ, ÞÔÏÂÙ ÐÏÌÕÞÉÔØ ÉÈ ÏÐÒÅÄÅÌÅÎÉÅ, ÍÏÖÅÔ ÐÏÔÒÅÂÏ×ÁÔØÓÑ ÏÐÒÅÄÅÌÉÔØ (ÞÅÒÅÚ #define) ÓÉÍ×ÏÌ _GNU_SOURCE.

ïçòáîéþåîéñ

÷ ÐÒÏÔÏËÏÌÅ, ÎÁ ËÏÔÏÒÏÍ ÒÁÂÏÔÁÅÔ NFS, ÓÕÝÅÓÔ×ÕÅÔ ÍÎÏÖÅÓÔ×Ï ÎÅÄÏÒÁÂÏÔÏË, × ÞÉÓÌÅ ÐÒÏÞÅÇÏ, ÏËÁÚÙ×ÁÀÝÉÈ ×ÌÉÑÎÉÅ ÎÁ O_SYNC É O_NDELAY.

POSIX ÐÒÅÄÏÓÔÁ×ÌÑÅÔ ÔÒÉ ÒÁÚÎÙÈ ×ÁÒÉÁÎÔÁ ÓÉÎÈÒÏÎÎÏÇÏ ××ÏÄÁ-×Ù×ÏÄÁ, ÓÏÏÔ×ÅÔÓÔ×ÕÀÝÅÇÏ ÆÌÁÇÁÍ O_SYNC, O_DSYNC É O_RSYNC. ÷ ÎÁÓÔÏÑÝÅÅ ×ÒÅÍÑ (×ÅÒÓÉÑ 2.1.130), ×ÓÅ ÏÎÉ Ñ×ÌÑÀÔÓÑ ÓÉÎÏÎÉÍÁÍÉ ÐÏÄ Linux.

óíïôòé ôáëöå

read(2), write(2), fcntl(2), close(2), link(2), mknod(2), mount(2), stat(2), umask(2), unlink(2), socket(2), fopen(3), fifo(4)

ðåòå÷ïä

Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 1999-2001