Fantaro ny baiko Linux Open

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.