Synopsis
#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 = "rakitra: /usr/include/fcntl.h"> fcntl.h> int open (const char * pathname , int flag ); int open (const char * lalana name , saina saina , fomba mode_t ); int creat (const char * anarana , fomba mode_t );Description
Ny linux command (open) antsoina (linux open) dia ampiasaina hanovana ny anaran-dàlana mankany amin'ny descriptor (antonontonony kely tsy ampiasaina ampiasaina amin'ny fampiasana azy amin'ny manaraka I / O toy ny amin'ny famakiana , manoratra , sns). Rehefa tonga ny fahombiazan'ilay antso dia alefa ny solonanarana ny solosaina ho ny solosaina ambany indrindra izay tsy mbola misokatra amin'izao dingana izao. Ity antso ity dia mamorona rakitra vaovao misokatra, tsy zaraina amin'ny dingana hafa. (Azo atao anefa ny mizara rakitra misokatra amin'ny alàlan'ny antso finday (2).) Ny famaritana ny anaran'ny rakitra vaovao dia natao hanokafana amin'ny asa fanatanterahana (jereo ny fcntl (2)). Ny fandefasana rakitra dia napetraka eo am-piandohan'ny rakitra.
Ny sainan - tsipika dia iray amin'ireo O_RDONLY , O_WRONLY na O_RDWR izay mangataka ny manokatra ny rakitra mivaky fotsiny, na manoratra fotsiny na mamaky / manoratra, bitwise- na 'd amin'ny zero na mihoatra amin'ireto manaraka ireto:
O_CREAT
Raha tsy misy ny rakitra dia ho noforonina. Ny tompon'ny (mpampiasa) ny rakitra dia napetraka amin'ny ID mpampiasa ny fizotry ny dingana. Ny fananana vondrona (ID ny vondrona) dia apetraka amin'ny ID fanodinam-pandraharahana na ny ID misy ny anaran'ny ray aman-drenin'ny ankizy (arakaraka ny karazana sy ny safidin-tsoratry ny rakitra sy ny fomba ambaran'ny ray aman-dreny, jereo ohatra ny ala safidy bsdgroups sy sysvgroups amin'ny file system ext2, araka izay voafaritra ao amin'ny tendrombohitra (8)).
O_EXCL
Raha ampiasaina amin'ny O_CREAT , raha efa misy ny rakitra dia fahadisoana izany ary tsy hahomby ny fisokafana . Amin'izao toe-javatra izao, misy rohy an'ohatra, na aiza na aiza misy azy. O_EXCL dia tapaka amin'ny rafitry ny rakitra NFS , fandaharam-pandaharana izay miankina amin'izany noho ny fanaovana asa fisakanana dia hanana toetry ny hazakazaka. Ny vahaolana amin'ny fametrahana rakitra atomika manakana amin'ny fampidirana rakitra dia ny famoronana tahiry miavaka eo amin'ny fs (ohatra ny fampidirana ny anaran'ny mpampiantrano sy ny pid), ampiasao ny rohy (2) mba hampifandray ny rakitra. Raha ny rohy () dia miverina 0, dia mahomby ny lock. Raha tsy izany, ampiasao stat (2) ao amin'ny rakitra tokana mba hanamarinana raha nitombo isa ny rohy ny rohy, ka ny fahombiazana dia mahomby ihany koa.
O_NOCTTY
Raha anaran-dàlan'ny referenera ny endriky ny terminal --- jereo tty (4) --- dia tsy ho ny terminal no mifehy ny processe na dia tsy manana iray aza ny process.
O_TRUNC
Raha efa misy ny rakitra ary misy rakitra mahazatra ary ny fomba fanokafana dia ahafahana manoratra (izany hoe O_RDWR na O_WRONLY) dia hofongorana hatramin'ny halavany 0. Raha ny rakitra dia rakitra FIFO na terminal terminal dia tsy fantatra ny sainan'ny O_TRUNC. Raha tsy izany dia tsy voamarina ny vokatry ny O_TRUNC. (Amin'ny alàlan'ny linux Linux maro dia tsy hiraharaha izany, amin'ny dikan-teny hafa dia hamerina fahadisoana.)
O_APPEND
Ny rakitra dia misokatra amin'ny fomba amam-panao. Alohan'ny hanoratana azy dia alefa eo amin'ny faran'ny ny rakitra ny mpanondro ny endritsoratra, toy ny amin'ny lseek . O_APPEND dia mety hitarika any amin'ny rakitra diso ao amin'ny rafitry ny rakitra NFS raha mihoatra ny dingana iray dia manainga ny data amin'ny dossier indray mandeha. Izany dia satria ny NFS dia tsy manohana ny fampidirana ny antontan-taratasy, ka ny kernel mpanjifa dia tsy maintsy manamboatra izany, izay tsy azo atao raha tsy misy ny fari-drakitra.
O_NONBLOCK na O_NDELAY
Raha azo atao, manokatra ny rakitra amin'ny fomba tsy fijanonana. Na ny fisokafana na ny asa hafa manaraka eo amin'ny solon'anarana izay naverina dia hiteraka hiandry ny fizotran'ny antso. Ho an'ny fikarakarana ny FIFOs (antsoina hoe fantsona), jereo koa fifo (4). Ity fomba ity dia tsy tokony hisy fiantraikany amin'ny rakitra hafa ankoatry ny FIFOs.
O_SYNC
Nosoratana ho an'ny synchronous I / O ny rakitra. Izay soratan'ny sora-baventy vokariny dia hanakana ny fizotran'ny fiantsoana raha tsy efa voasoratra ara-batana ho an'ny fitaovana fototra ny angona. Jereo, ohatra, ny FIKORONTANANA etsy ambany.
O_NOFOLLOW
Raha ny rohim- pirazanana dia rohy simbolika, dia tsy mahomby ny fisokafana. Ity dia extension of FreeBSD, izay nampidirina tao Linux tamin'ny version 2.1.126. Ireo rohy simbolika amin'ny ampahany taloha amin'ny anaran'ny lalana dia mbola hanaraka azy. Ny lohateny avy amin'ny glibc 2.0.100 ary aoriana dia ahitana famaritana io sainam-pirenena io; kernels alohan'ny 2.1.126 dia tsy hiraharaha izany raha ampiasaina .
O_DIRECTORY
Raha toa ka tsy rakitra ny anaran-dasy , dia ataovy izay tsy hahombiazanao. Ity sainam-pirenena ity dia linux manokana, ary nampidirina tao amin'ny version 2.1.126 kernel, mba hisorohana ny olana momba ny fandikan-dalàna raha toa ka nantsoina tamin'ny fitaovana FIFO na kasety ny opendir (3), fa tsy tokony ampiasaina ivelan'ny fampiharana azy .
O_DIRECT
Andramo ny fampihenana ny vokatra cache avy amin'ny I / O mankany sy amin'ity rakitra ity. Amin'ny ankapobeny dia hanimba ny fahombiazany izany, saingy ilaina amin'ny toe-javatra manokana izany, toy ny rehefa mampiasa ny caching manokana. Ny rakitra / / atao dia mivantana mankany / avy amin'ny sehatra buffer. Ny I / O dia mitovitovy, izany hoe, rehefa vita ny famakiana (2) na ny fanoratana (2) antso, dia azo antoka fa nafindra ny angona. Ny lamosiny, ary ny fampifanandrinan'ny buffer sy ny fandefasana rakitra dia tsy maintsy samy manana ny ampahany betsaka amin'ny sanda logic ny dossier.
Io sainam-pirenena io dia tohanan'ny rafitra Unix toy; Ny fanampiana dia nampidirina eo ambanin'ny Linux ao amin'ny version 2.4.10 kernel.
Endrika iray mitovy hevitra mitovy amin'ny fitaovana fanakanana dia nofaritana tamin'ny mena (8).
O_ASYNC
Manomeza mari-pamantarana (SIGIO tsy alahatra, fa azo ovaina amin'ny fcntl (2)) raha azo atao ny miditra na manomboka amin'ny solon'anarana . Io endri-javatra io dia natao ho an'ny terminal, pseudo-terminal, ary sockets. Jereo ny fcntl (2) ho an'ny antsipiriany bebe kokoa.
O_LARGEFILE
Amin'ny rafitra 32-bit izay manohana ny System Large Files, dia mamela ireo rakitra izay tsy mety aseho amin'ny 31 bits mba hisokatra.
Ny sasany amin'ireo saina ireo dia azo ovaina amin'ny fampiasana fcntl aorian'ny fisokafana ny rakitra.
Ny fomba ambaran'ny argument dia mamaritra ny fahazoan-dàlana ampiasaina raha toa ka misy rakitra vaovao noforonina. Izy no manova ny rindran'asa amin'ny fomba mahazatra: ny alalana amin'ny rakitra noforonina dia (mode & ~ umask) . Mariho fa ity fomba fiasa ity dia ampiharina amin'ny fidirana amin'ny ho avy amin'ny rakitra vao noforonina; Ny antso misokatra izay mamorona lahatsoratry ny raki-peo dia mety hamerina mamoaka ny descriptor amin'ny raki-pandefasana / manoratra.
Ireo fehezan-dalàna famantarana an'ohatra dia nomena ny fomba :
S_IRWXU
Ny mpisera 00700 (tompony mpampiasa) dia namaky, nanoratra ary nanatanteraka ny fahazoan-dàlana
S_IRUSR (S_IREAD)
Ny mpampiasa 00400 dia nahazoana alalana
S_IWUSR (S_IWRITE)
Ny mpisera 00200 dia manana fahazoan-dalana manoratra
S_IXUSR (S_IEXEC)
00100 ny mpampiasa dia nahazoana alàlana
S_IRWXG
Ny vondrona 00070 dia namaky, nanoratra ary nanonona ny fahazoan-dàlana
S_IRGRP
Ny vondrona 00040 dia nahazoana alalana
S_IWGRP
Ny vondrona 00020 dia manana fahazoan-dalana manoratra
S_IXGRP
Vondrona 00010 dia nahazoana alalana
S_IRWXO
00007 ny hafa dia namaky, nanoratra ary nanonona ny fahazoan-dàlana
S_IROTH
00004 hafa namaky ny fahazoan-dàlana
S_IWOTH
Ny 00002 hafa dia manana fahazoan-dalana manoratra
S_IXOTH
00001 ny hafa dia nahazoana alalana
Tsy maintsy asiana fepetra rehefa misy O_CREAT eo amin'ny sainam-pirenena , ary tsy raharahiana hafa.
Ny creat dia mitovy amin'ny fanokafana saina miaraka amin'ny O_CREAT | O_WRONLY | O_TRUNC .
VALIM-REHETRA
Misokatra ary mamerina ilay fehezanteny vaovao vaovao, na -1 raha nisy ny hadisoana (raha ny marina, ny errno dia napetraka araka ny tokony ho izy). Mariho fa ny fisokafana dia afaka manokatra raki-peo manokana, fa ny Creat dia tsy mamorona azy ireo - mampiasa mknod (2) fa tsy.
Ao amin'ny rafitry ny rakitra NFS miaraka amin'ny UID mapping, dia afaka mamerina mamaritra ny filazan'ilay dossier fa alefa (2) fangatahana amin'ny EACCES . Izany dia satria manokatra amin'ny alalan'ny fanamarinana ny fahazoan-dàlana ny mpanjifany, saingy ny UID fandraketana dia tanterahan'ny mpizara rehefa avy mamaky sy manoratra fangatahana.
Raha toa ka vao noforonina ilay rakitra, dia voafaritra amin'izao fotoana izao ny atime, ctime, mtime, ary toy izany koa ny sehatra ctime sy mtime ao amin'ny directory parent. Raha tsy izany, raha ovaina ny rakitra noho ny saina O_TRUNC, ny sehatra ctime sy mtime dia voafaritra amin'izao fotoana izao.
fahadisoana
EEXIST
Efa misy ny sori-dalana ary ampiasaina ny O_CREAT sy O_EXCL .
EISDIR
Ny anaran'ny pathname dia manondro ny lahatahiry iray ary ny fidirana nangatahana ny fandraisana an-tsoratra (izany hoe, O_WRONLY na O_RDWR dia napetraka).
EACCES
Tsy azo atao ny mandefa fidirana amin'ny rakitra, na ny iray amin'ireo tari-dàlana amin'ny anaran'ny lalana dia tsy namela fahazoan-dàlana hikaroka (manatanteraka), na mbola tsy misy ilay rakitra ary tsy mahazo alalana hanoratra ny fidirana amin'ny lahatahiry momba ny ray aman-dreny.
ENAMETOOLONG
làlana loatra ny lalana.
ENOENT
Tsy voafetra ny O_CREAT ary tsy misy ilay rakitra voalaza. Na, misy singa iray ao anaty lisitra ao anaty lalana tsy misy na tsy misy dikany.
ENOTDIR
Ny singa iray ampiasaina amin'ny lisitry ny anaran-dalana dia tsy, raha ny marina, ny lahatahiry iray, na ny O_DIRECTORY dia voatondro ary ny anaran-dalana dia tsy lisitra.
ENXIO
O_NONBLOCK | O_WRONLY dia napetraka, ny rakitra voalaza dia FIFO ary tsy misy dingana manana rakitra misokatra ho an'ny famakiana. Na, ny rakitra dia fitaovana manokana ary tsy misy fitaovana mifanaraka amin'izany.
ENODEV
Ny anaran'ny path dia manondro rakitra manokana ary tsy misy fitaovana mifanaraka amin'izany. (Ity ny kernel kernel ity - amin'ity toe-javatra ity dia tsy maintsy averina ny ENXIO.)
EROFS
Ny anaran'ny pathname dia manondro ny antontan-taratasy iray amin'ny solosaina fandefasana solon'anarana ary ny fangatahana fanoratana dia nangatahana.
ETXTBSY
Ny anaran'ny pathname dia manondro sary iray azo trandrahana izay atolotra amin'izao fotoana izao ary ny fangatahana fanoratana dia nangatahana.
EFAULT
Ny mari-pamantarana momba ny lalana ao ambadiky ny adiresy malalaka.
ELOOP
Maro loatra ireo rohy simbolika no nihaona tamin'ny famahana ny anaran'ny lalana , na ny O_NOFOLLOW dia voalaza fa ny anaran'ny lalana kosa dia rohy an'ohatra.
ENOSPC
Tokony noforonina ny anaran'ny lalana saingy ny fitaovana misy ny anaran'ny lalana dia tsy misy toerana ho an'ny rakitra vaovao.
ENOMEM
Tsy ampy ny fahatsiarovana kernel.
EMFILE
Ny dingana efa misy ny ampahany betsaka indrindra amin'ny rakitra misokatra.
ENFILE
Voafaritra ny fetran'ny totalin'ny rakitra misokatra eo amin'ny rafitra.
Mifanaraka amin'ny
SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Ny saina O_NOFOLLOW sy O_DIRECTORY dia Linux -specific. Mety misy ny mamaritra ny macro _GNU_SOURCE mba hamaritana ny famaritana azy ireo.
famerana
Maro ny tsy fahampian- tsakafo ao amin'ny protocola misy ny NFS, misy fiantraikany eo amin'ny hafa O_SYNC sy O_NDELAY .
POSIX dia manome venty telo samihafa amin'ny angona angon-drakitra , mifanaraka amin'ny saina O_SYNC , O_DSYNC ary O_RSYNC . Amin'izao (2.1.130) izao dia samy midika hoe Linux avokoa.