የ Linux Command Command ይክፈቱ

ማጠቃለያ

#include "A HREF =" file: /usr/include/sys/types.h "> sys / types.h> #include" A HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> #include "A HREF =" file: /usr/include/fcntl.h "> fcntl.h> int open (const char * pathname , int flags ); int open (const char * pathname , int flags , mode_t ሁነታ ); int creat (ደንብ char * pathname , mode_t ሁነታ );

መግለጫ

ክፍት () የስርዓት ጥሪ ሎይስ ትዕዛዝ የአንድ ስሪት ስምን ወደ የፋይል ገላጭ ( በንባብ , በጽሑፍ , ወዘተ ላይ ጥቅም ላይ መዋልን በተመለከተ አነስተኛ, ጎጂ-ኢንቲጀር) ለመቀየር ጥቅም ላይ ይውላል. ጥሪው ስኬታማ ሲሆን የፋይል ገላጭው ተመልሶ ለሂደቱ ያልተከፈተ በጣም አነስተኛ የፋይል ገላጭ ነው. ይህ ጥሪ አዲስ ክፍት ፋይል ይፈጥርና ከማንኛውም ሌላ ሂደት ጋር አይጋራም. (ነገር ግን የተጋራ ፋይል በፎቶ (2) የስልክ ጥሪ በኩል ሊነሳ ይችላል.) አዲሱ የፋይል ገላጭ በሂደቶች ( fcntl (2)) ላይ ክፍት ሆኖ እንዲቆይ ይደረጋል . የፋይል ማካካሻው የፋይሉ መጀመሪያ ላይ ተስተካክሏል.

የግብአት ጠቋሚዎች ፋይሉን ተነባቢ ብቻ, መጻፍ ወይም ማንበብ / መፃፍ, በትንሹ - ወይም 'd ከሱ ጋር ወይም ከዚያ በላይ ከሚሆኑት መካከል እንዲከፍቱ የሚጠይቁ ከ O_RDONLY, O_WRONLY ወይም O_RDWR አንዱ ነው:

O_CREAT

ፋይሉ ከሌለ አይፈጠርም. የፋይሉ ባለቤት (የተጠቃሚ መታወቂያ) ወደ ሂደቱ ውጤታማ ተጠቃሚ መታወቂያ ተቀናብሯል. የቡድን ባለቤትነት (የቡድን መታወቂያ) ለሂደቱ ውጤታማ የቡድን መታወቂያ ወይም ለወላጅ የቡድን መታወቂያ (በፋይል ዲስፋር ዓይነት እና በተርፍ አማራጮች የሚወሰን እና በወላጁ ማውጫ ሁነታ ላይ ተመስርተው, ለምሳሌ, ተራራ በኤሲፒኤስ ስርዓተ-ፋይል ውስጥ የተዘረዘሩትን ቢsdgroups እና sysvgroups , በዩኤስ ተራራ (8) ውስጥ በተገለጸው መሰረት.

O_EXCL

O_CREAT ጋር ጥቅም ላይ ሲውል, ፋይሉ ቀድሞውኑ ካለ, ስህተት ነው እና ክፍተቱም አይሳካም. በዚህ ዐውደ-ጽሑፍ የትኛውም ቦታ የትኛውም ቦታ ላይ ቢሆን, ተምሳሌታዊ አገናኝ ይኖራል. O_EXCLNFS የፋይል ስርዓቶች ላይ ተሰብሯል ፕሮግራሞችን ለመፈተሽ በሚተማመኑ መርሃ ግብሮች ላይ የፕሮግራም የጋም ሁኔታን ያካትታል. ተቆልፈው የተሰሩትን የአቶሜትሪክ ፋይል መቆለፊያ መፍትሄ በ "fs" ላይ አንድ ልዩ ፋይል መፍጠር (ለምሳሌ የአስተናጋጅ ስም እና ፒድ), አገናኝን (2) ወደ ተቆለፈፋው አገናኝ ለማገናኘት ይጠቀሙ. አገናኝ () ድጋሚ ከሆነ 0 መቆለጡ የተሳካ ነው. አለበለዚያ የመግቢያ ቆጠራው ወደ 2 ከፍ ያደርገውን ለመፈተሽ በልዩ ፋይል ላይ የቁጥጥር (2) ተጠቀም, በተመሳሳይም መቆለጡም ስኬታማ ነው.

O_NOCTTY

የመንገድ ስም ወደ ተርሚናል መሣሪያነት የሚመለከት ከሆነ --- tty (4) --- ሂደቱ ምንም እንኳን ሂደ ቢሆንም እንኳ የሂደቱ የመቆጣጠሪያ ተርሚናል አይሆንም.

O_TRUNC

ፋይሉ ቀድሞውኑ እና መደበኛ ፋይል ከሆነ እና ክፍት ሁነታ ለመፃፍ ይፈቅዳል (ማለትም, O_RDWR ወይም O_WRONLY ነው) ይህ ለስራ ርዝመት 0.8% ይሆናል. ፋይሉ FIFO ወይም ተርሚናል የመሳሪያ ፋይል ከሆነ, የ O_TRUNC ዕልባት ችላ ይባላል. አለበለዚያ የ O_TRUNC ተጽዕኖ አልተገለጸም. (በብዙ የሊነክስ ስሪቶች ላይ ችላ ይባላል, በሌሎች ስሪቶች, ስህተት ያመጣል.)

O_APPEND

ፋይሉ በአባሪ ሁነታ ውስጥ ተከፍቷል. እያንዳንዱ ከመጻፍ በፊት, ፋይሉ ጠቋሚው በፋይሉ መጨረሻ ላይ እንደ " ሆሄ" ይታያል . ከአንድ በላይ ሂደቶች በአንድ ጊዜ ወደ አንድ ፋይል ውሂብን ካከለው O_APPEND ወደ ፋፋይ ፋይሎች በ NFS ፋይል ስርዓቶች ሊመራ ይችላል. ይህ የሆነበት ምክንያት NFS ለፋይሉ መጋበዝን ስለማይደግፍ የደንበኛውን ከርነል መሙላት አለበት ምክንያቱም ያለ ዘር ሁኔታ ሊሰራ አይችልም.

O_NONBLOCK ወይም O_NDELAY

በሚቻልበት ጊዜ ፋይሉ እገዳ በማይኖርበት ሁነታ ይከፈታል. በፋይል ፋይል ገላጭ ውስጥ የተከፈተ ወይም ምንም ተከታታይ ክወናዎች የመጠባበቂያ ሂደቱ እንዲጠብቅ አይደረግም. የ FIFOs (ስም የተሰየሙ ቱቦዎች) አያያዝን በተመለከተ fifo (4) ይመልከቱ. ይህ ሁነታ ከ FIFOs ውጪ በሆኑ ፋይሎች ላይ ምንም ተፅዕኖ አያስፈልገውም.

O_SYNC

ፋይሉ ለ I / O ቅንጅቶች ተከፍቷል. በተጠቀሰው የፋይል ገላጭ ላይ ያሉ ማንኛቸውም ፃፎች ውሂቡ ወደ አካውንቱ መሰረተ ሃይል እስከሚጻጻቸው ድረስ የስልክ ሂደቱን ያግደዋል. ከዚህ በታች ያለውን የ RESTRICTIONS ይመልከቱ.

O_NOFOLLOW

የጎዳና ስምያዊ ተምሳሌት ከሆነ, ክፍት አልተሳካም. ይህ የ FreeBSD ቅጥያ ነው, እሱም ወደ ሊነክስ በ 2.1.126 ውስጥ ተጨምሯል. በቀዳሚዎቹ የቀድሞ ስሪት አካል ውስጥ ተምሳሌታዊ አገናኞች አሁንም ይከተላሉ. ከ glibc 2.0.100 እና ከዚያ በኋላ ያሉ አርእስት የዚህ ባንዲራ ትርጉም ይገኙበታል; ከ 2.1.126 በፊት ከርሰሉ ከስራ ችላ ያደርገዋል .

O_DIRECTORY

የመንገድ ስም ማውጫ ካልሆነ ክፍት እንዲከፈት ያድርጉት. ይህ ዕልባት ሊነበብ የሊነክስ-ተኮር ነው, እናም በ ስሪት 2.1.126 ውስጥ, < ኦፒንዲየር> (3) በ FIFO ወይም በቴፕ መሳሪያ ላይ ቢጠራጠር , የአገልግሎቱን አለመቀበልን ለማስቀረት , ግን ኦፕሬየር ከሚተገበሩበት ውጭ ጥቅም ላይ መዋል የለበትም. .

O_DIRECT

የዚህ አይነ ውስጥ / I / O መሸጎጫ ውጤቶችን ለመቀነስ ይሞክሩ. በአጠቃላይ ይህ አፈጻጸምን ያቃልላል, ነገር ግን ትግበራዎች እራሳቸውን በራሳቸው ሲሸጎጡ እንደ ልዩ ሁኔታዎች በተለይ ጠቃሚ ነው. የፋይል / I / O ፋይል በቀጥታ ወደ / ከተጠቃሚ ክፍት ታጋቢዎች ነው. I / O ማሳመር ሲሆን ይህም ማለት የንባብ (2) ወይም (2) የስልዓት ጥሪ ሲጠናቀቅ መረጃው እንደተላለፈ ይጠበቃል. የዝውውር መጠናቸውን, እና የተጠቃሚ ድርጭትና የፋይል መቅረጫ አቀማመጥ የሁሉም የፋይል ስርዓቱ የሎጂክ ጥግ መጠን ነው.
ይህ ጥቆማ በበርካታ ዩኒክስ-በመሳሰሉ ስርዓቶች ላይ ይደገፋል. ድጋፍ በ Linux ስርዓተ ክወና ስሪት 2.4.10 ውስጥ ታክሏል.
በማገጃ መሳሪያዎች ላይ ተመሳሳይ ተመሳሳይ በይነገጽ በጥቁር (8) ውስጥ ተገልጧል.

O_ASYNC

አንድ ምልክት (SIGIO በነባሪነት ያመንጩ, ሆኖም ግን በዚህ የፋይል ገላጭ ውስጥ ግብዓት ወይም ውጤት በሚኖርበት ጊዜ ይሄ በ fcntl (2) በኩል ሊቀየር ይችላል. ይህ ባህርይ ለመገልገያዎች, ለስልክ-ታች ጫፎች, እና ሶኬቶች ብቻ ይገኛል. ተጨማሪ ዝርዝሮችን ለማግኘት fcntl (2) ን ይመልከቱ.

O_LARGEFILE

ትልቅ የፋይል ስርዓትን የሚደግፉ 32-ቢት ስርዓቶች, መጠናቸው የ 31 ቢት ውሎች እንዲከፈቱ አይፈቀድላቸው.

ከነዚህ የአማራጭ ባንዲራዎች መካከል ፋይሉ ከተከፈተ በኋላ fcntl ን በመጠቀም ሊለወጥ ይችላል.

የክርክሬሽን ሞድ አዲስ ፋይል ለመፍጠር ጥቅም ላይ የሚውል ፍቃዶችን ይገልፃል. በተለመደው መንገድ በሂደቱም ጭማሬ ይሻሻላል ; የፈጠሩትን ፋይሎች ፍቃዶች (ሁኔታ እና ----ummask) ናቸው . ይህ አሠራሩ ወደፊት ለሚፈጠረው አዲስ ፋይል መዳረስ ብቻ እንደሚሠራ ልብ ይበሉ; ተነባቢ ብቻ ፋይል የሚፈጥር ክፍት ጥሪ የንባብ / የመፃፍ ፋይል ገላጭ ሊመልስ ይችላል.

የሚከተሉት ምሳሌያዊ ቋሚዎች ለአውራሻዎች ተዘጋጅተዋል.

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 ሌሎች ፈቃድ ፈፅመዋል

O_CREAT በአብራሪዎች ውስጥ ሲገኝ መገለጽ አለበት, እና በሌላ መልኩ ችላ ተብሏል.

መፍቻO_CREAT | O_WRONLY | O_TRUNC ጋር እኩል በሆነ መልኩ ባንዲራዎች ጋር እኩል ነው.

VALUE RETURN

ክፍት እና ፈጠራውን አዲስ የፋይል ገላጭ ይመልሳል, ወይም -1 ስህተት ከተከሰተ (ስህተት በሆነ ሁኔታ ስህተት በተገቢ ሁኔታ ከተቀናበረ). ማሳያው የልዩ ልዩ ፋይሎች መክፈት መቻሉን ልብ ይበሉ, ነገር ግን ፈጠሩ ሊፈጥር አይችልም - በምትኩ mknod (2) ይጠቀሙ.

በ NFS የፋይል ስርዓቶች በ UID ማፒዲንግ የነቃ, የፋይሉ ገላጭ ምስል ሊመልስ ይችላል, ነገር ግን ለምሳሌ (2) ማንበብEACCES ውድቅ ተደርጓል. ይህ የሆነው ደንበኛው ፍቃዶቹን በመፈተሸ ክፍተቱን ሲያከናውን ነው, ነገር ግን የዩአይፒ ማድረጊያ አሰራሮች ሲነበቡ እና ሲጽፉ በአገልጋዩ ይከናወናል.

ፋይሉ አዲስ ከተፈጠረ, የአስፈላጊነቱ, የጊዜ ሰአት, የሙሌት መስኮቹ በአሁኑ ጊዜ ተስተካክለዋል, እንዲሁም የወላጅ ዳይሬክቶች የጊዜ ሰአት እና የሙሉ መስኮች ናቸው. አለበለዚያ, በ O_TRUNC ዕልባት ምክንያት ፋይሉ ከተስተካከለ, የጊፒኤም እና የምርት መስኮቹ ለአሁኑ ሰዓት ተስተካክለዋል.

ስህተቶች

ዘይቤው

የጎዳና ስም አስቀድሞም ይገኛል እና O_CREAT እና O_EXCL ጥቅም ላይ ውለዋል.

EISDIR

የስምሪት ስም ማውጫውን የሚመለከት ሲሆን ጉዳዩም የተጠየቀው መዳረሻ (ማለት, O_WRONLY ወይም O_RDWR ተዘጋጅቷል).

EACCES

የፋይሉ የተጠየቀው መዳረሻ አይፈቀድም, ወይም በፍለጋ ውስጥ ከነበሩት ማውጫ ውስጥ አንዱ ፍለጋ (ፍቃድ) አልፈቀደም, ወይም ፋይሉ ያልነበረ እና የወላጅ ማውጫ ላይ የመፃፍ ፍቃድ አይፈቀድም.

ENAMETOOLONG

የጎዳና ስም በጣም ረጅም ነበር.

ENOENT

O_CREAT አልተዘጋጀም እና የተሰየመው ፋይል አይገኝም. ወይም, በስምሪት ስም ውስጥ የአድራሻ ክፍል የለም, ወይም ተያያዥነት ያለው ተምሳሌታዊ አገናኝ አይደለም.

ENOTDIR

በመንገድ ስሙ ውስጥ እንደ ማውጫ ስራ ላይ የሚውለው ክፍል, በእውነቱ, ማውጫ አይደለም, ወይም O_DIREGORY ተለይቶ እና የስም ርእስ ማውጫ አልነበረም.

ENXIO

O_NONBLOCK | O_WRONLY ተቀናብሯል, የተሰየመው ፋይል FIFO ነው, እና ፋይሉ ለንባብ ክፍት ነው. ወይም, ፋይሉ የመሳሪያ ፋይል ነው, እና ምንም ተጓዳኝ መሣሪያ የለም.

ENODEV

የስምሪት ስም ለአንድ መሣሪያ ልዩ ፋይል ነው እናም ምንም ተጓዳኝ መሣሪያ አይገኝም. (ይህ የ Linux kernel bug ነው - በዚህ ሁኔታ ENXIO መመለስ አለበት.)

EROFS

ዱካ ስሪት በአንድ ተነባቢ ስርዓተ ፋይል ውስጥ ያለ ፋይልን ያመለክታል እና የመዳረሻ ፍቃድ ተጠይቋል.

ኢቴፕስሲ

የስምሪት ስም በአሁኑ ጊዜ በመፈጸም ላይ የሚገኝ እና ተፈፃሚ የመፃፍ ጥያቄን ተጠይቋል.

EFAULT

የአካባቢያዊ ስም ነጥቦች ከአቅራቢው የአድራሻ ቦታ ውጭ.

ELOOP

የጎዳና ስምን በመፍታት ላይ ብዙ ተምሳሌታዊ አገናኞች ተገኝተዋል, ወይም O_NOFOLLOW ተገልጿል, ነገር ግን የስም ርእስ ተምሳሌት ነው.

ENOSPC

የጎዳና ስም መፈጠር ነበረበት ነገር ግን የስምሪት ስም ያለው መሳሪያ ለአዲሱ ፋይል ቦታ የለውም.

ENOMEM

በቂ ያልሆነ የከርነል ማህደረ ትውስታ አለ.

EMFILE

ሂደቱ ከፍተኛው የፋይሎች ብዛት ክፍት ነው.

ENFILE

በስርዓቱ ላይ የተከፈቱ የፋይሎች ብዛት ገደብ ላይ ተደርሷል.

Conforming to

SVR4, SVID, POSIX, X / OPEN, BSD 4.3 የ O_NOFOLLOW እና O_DIRECTORY ባንዲራዎች ሊነክስ ናቸው. አንድ ሰው የእነሱን መግለጫዎች ለማግኘት የ _GNU_SOURCE ማክሮን መግለፅ ሊኖርበት ይችላል.

ገደቦች

በ NFS ውስጥ በተገለፀው ፕሮቶኮል ውስጥ ብዙ ችግር አለ, ይህም ከ O_SYNC እና O_NDELAY መካከል ተጽዕኖ ያደርስበታል .

POSIX ለሦስት የተለያዩ አይነት I / O የተመሳሰሉ የማመሳሰያ አማራጮችን ያቀርባል, ከባንሮች O_SYNC , O_DSYNC እና O_RSYNC ጋር ይመሳሰላል . በአሁኑ ጊዜ (2.1.130) እነዚህ ሁሉ ከሊነክስ ጋር ተመሳሳይ ናቸው.