Kawm cov lus qhib Linux

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 = "file: /usr/include/fcntl.h"> fcntl.h> rau cov menyuam qhib (const char * pathname , rau cov menyuam xim ); rau cov menyuam qhib (const char * pathname , rau cov menyuam kawm ntawv , hom mode_t ); rau cov menyuam tus kheej (const char * pathname , hom_t hom );

Kev piav qhia

Qhov qhib qhov system hu ua linux yog siv los hloov cov pathname rau hauv cov ntaub ntawv hais txog tus kheej (ib qho me me, tsis muaj qhov kev xam xaj rau kev siv I / O tom qab nyeem ntawv , sau ntawv , thiab lwm yam). Thaum tus xov tooj hu tau zoo, cov ntaub ntawv piav qhia rov qab wil yog qhov qis tshaj tawm cov lus piav qhia tsis tau qhib rau qhov txheej txheem. Qhov no hu ua ib qho tshiab qhib cov ntaub ntawv, tsis koom nrog lwm cov txheej txheem. (Tab sis cov ntaub ntawv qhib cov ntaub ntawv yuav tshwm sim ntawm lub diav rawg (2) qhov system hu.) Cov ntaub ntawv teev tshiab yog teem rau kev qhib nyob thoob plaws kev siv exec (saib fcntl (2)). Cov ntaub ntawv offset yog teem rau pib ntawm cov ntaub ntawv.

Cov cim chij yog ib qho ntawm O_RDONLY , O_WRONLY los yog O_RDWR uas thov qhib qhib cov ntaub ntawv nyeem-tsuas, sau-tsuas lossis nyeem / sau, ntsig txog, ntsis- lossis d nrog xoom lossis ntau dua ntawm cov hauv qab no:

O_CREAT

Yog tias cov ntaub ntawv tsis muaj nyob ces nws yuav raug tsim. Tus tswv (tus neeg siv daim ID) ntawm cov ntaub ntawv yog teem rau tus neeg siv tau zoo ntawm tus txheej txheem. Cov tswv cuab ntawm pab pawg (pawg ID) raug teeb tsa rau pawg neeg ntawm tus txheej txheem los yog pawg ID ntawm qhov directory directory (nyob ntawm cov ntaub ntawv filesystem thiab kev xaiv nruab nrab, thiab hom kev qhia txog niam txiv, saib, xws li, lub roob cov kev xaiv bsdgroups thiab sysvgroups ntawm ext2 filesystem, raws li tau piav qhia nyob hauv roob (8)).

O_EXCL

Thaum siv nrog O_CREAT , yog tias cov ntaub ntawv twb tshwm sim lawm nws yog qhov yuam kev thiab qhov qhib yuav tsis. Nyob rau hauv qhov ntsiab lus teb no, lub cim muaj qhov cim, tsis hais qhov twg nws cov ntsiab lus. O_EXCL tau tawg rau ntawm NFS cov ntaub ntawv , cov kev pab cuam uas vam khom rau kev ua cov haujlwm xauv khes yuav muaj kev sib tw nrog haiv neeg. Kev daws teebmeem atomic cov ntaub ntawv siv lub lockfile siv los tsim cov ntaub ntawv cim rau tib tus fs (xws li, siv lub npe thiab pid), siv qhov txuas (2) los ua qhov txuas rau lub lockfile. Yog tias txuas () rov qab 0, lub xauv yog qhov ua tau zoo. Txwv tsis pub, siv stat (2) ntawm cov ntaub ntawv tshwj xeeb los xyuas seb nws qhov txuas tau nce mus rau 2, qhov twg yog qhov xauv los kuj zoo.

O_NOCTTY

Yog tias txoj kab npe hais txog cov khoom davhlau ya nyob twg --- saib tty (4) --- nws yuav tsis ua tus txheej txheem tswj lub dav hlau txawm hais tias tus txheej txheem tsis muaj.

O_TRUNC

Yog tias cov ntaub ntawv twb muaj lawm thiab yog cov ntaub ntawv tsis tu ncua thiab qhib hom tso cai rau kev sau ntawv (piv txwv tias, yog O_RDWR los yog O_WRONLY) nws yuav raug xa mus rau qhov ntev 0. Yog tias cov ntaub ntawv yog ib lub file los yog cov davhlau ya nyob twg, O_TRUNC chij tsis raug. Txwv tsis pub, cov nyhuv ntawm O_TRUNC yog tsis muaj tseeb. (Nyob rau ntau lub Linux versions nws yuav ignored; ntawm lwm versions, nws yuav rov ua yuam kev.)

O_APPEND

Cov ntaub ntawv yog qhib rau hauv hom rov qab. Ua ntej txhua tus sau , tus pointer ntawv yog qhov chaw nyob ntawm qhov kawg ntawm cov ntaub ntawv, txhais tau hais tias nrog lseek . O_APPEND tej zaum yuav ua rau cov ntaub ntawv tsis zoo ntawm NFS cov ntaub ntawv yog tias muaj ntau tshaj ib txoj kev xa cov ntaub ntawv rau ib zaug. Qhov no yog vim tias NFS tsis txhawb ntxiv rau cov ntaub ntawv, yog li tus neeg mob ntsig yuav tsum simulate nws, uas tsis tuaj yeem ua tsis tau ib haiv neeg twg.

O_NONBLOCK lossis O_NDELAY

Thaum ua tau, cov ntaub ntawv qhib rau hauv hom tsis txwv. Tsis qhib qhov twg los yog kev ua haujlwm tom qab ntawm cov ntaub ntawv piav qhia uas tau xa rov qab yuav ua rau txoj kev hu tuaj tos. Rau kev tuav ntawm FIFOs (lub npe hu ua kav dej), saib kuj tsib (4). Cov hom no tsis tas yuav muaj kev cuam tshuam dab tsi rau lwm cov ntaub ntawv dua li cov ntawv sau ua ntej.

O_SYNC

Cov ntaub ntawv yog qhib rau synchronous I / O. Cov lus sau rau ntawm tus neeg ua tiav cov lus qhia yuav thaiv cov txheej txheem hu ua kom txog thaum cov ntaub ntawv raug muab sau rau cov khoom kho lub cev. Saib TXWV TSIM NYOG hauv qab no.

O_NOFOLLOW

Yog tias cov pathname yog lub cim kev sib txuas, ces qhov pib tsis. Qhov no yog qhov FreeBSD Extension, uas tau ntxiv rau Linux hauv version 2.1.126. Cim txuas mus rau yav dhau los Cheebtsam ntawm qhov pathname tseem yuav tau ua raws. Lub headers ntawm glibc 2.0.100 thiab tom qab muaj xws li ib lub ntsiab txhais ntawm tus chij; kernels ua ntej 2.1.126 yuav las mees nws yog siv .

O_DIRECTORY

Yog tias txoj kab lus tsis yog directory, ua rau kom poob. Cov chij no yog Linux tshwj xeeb, thiab tau ntxiv rau hauv cov ntsiav version 2.1.126, kom tsis txhob muaj kev cuam tshuam cov kev pab cuam yog tias opendir (3) hu ua rau lub koob los sis daim kab xev, tab sis yuav tsum tsis txhob siv lwm qhov kev siv ntawm Opendir .

O_DIRECT

Sim txo cov teebmeem cache ntawm I / O rau thiab los ntawm cov ntaub ntawv no. Feem ntau qhov no yuav degrade cov kev ua tau zoo, tab sis nws tseem ceeb nyob rau hauv tshwj xeeb ntau yam, xws li thaum twg cov kev siv ua lawv tus kheej caching. Cov ntaub ntawv I / O ua tiav ncaj qha mus / los ntawm cov neeg siv qhov chaw buffers. Qhov I / O synchronous, xws li, thaum nyeem tiav (2) los yog sau (2) qhov system hu, cov ntaub ntawv yuav tsum tau muab xa mus. Hloov qhov ntau thiab tsawg, thiab sib kho ntawm cov neeg tsis siv neeg thiab cov ntaub ntawv offset yuav tsum tag nrho cov zauv ntawm cov kev txwv zauv loj ntawm cov ntaub ntawv.
Qhov chij no txhawb rau ntau hom Unix-xws li lub; kev them nyiaj yug tau ntxiv nyob rau hauv Linux hauv ntsiav version 2.4.10.
Ib qho kev sib txuas zoo sib xws rau kev thaiv li tau piav nyob rau hauv raw (8).

O_ASYNC

Tsim qhov teeb liab (SIGIO los ntawm lub neej ua ntej, tab sis qhov no yuav hloov ntawm fcntl (2)) thaum tawm tswv yim los yog tso zis ua tau rau hauv cov ntaub ntawv no. Qhov no feature tsuas yog muaj nyob rau cov qij, pseudo-terminals, thiab nyob. Saib fcntl (2) yog xav paub ntxiv.

O_LARGEFILE

Rau 32-ntsis systems uas pab txhawb nqa Cov Ntaub Ntawv Loj Loj, pub cov ntaub ntawv tso cai rau cov ntau thiab tsawg tsis tuaj yeem sawv cev hauv 31 khoom qhib.

Qee cov cim chij no yauv tau hloov kho fcntl tom qab tau qhib cov ntaub ntawv.

Cov hom lus sib cav cov lus tso cai siv los siv rau hauv cov ntaub ntawv tshiab. Nws yog hloov los ntawm tus txheej txheem lub umask nyob rau hauv txoj kev niaj zaus: lub permissions ntawm cov ntaub ntawv tsim yog (hom & ~ umask) . Nco ntsoov tias hom no tsuas yog siv rau cov kev nkag tau rau yav tom ntej ntawm cov ntaub ntawv tshiab; qhov qhib hu uas tsim cov ntaub ntawv tsuas yog xa rov tuaj rau tus nyeem ntawv / sau cov lus piav qhia.

Cov cim nram qab no yog muab rau hom :

S_IRWXU

00700 tus neeg siv (tus tswv tsev) tau nyeem, sau ntawv thiab ua kev tso cai

S_IRUSR (S_IREAD)

00400 tus neeg siv tau nyeem ntawv tso cai

S_IWUSR (S_IWRITE)

00200 tus neeg tau sau ntawv tso cai

S_IXUSR (S_IEXEC)

00100 neeg tau ua kev tso cai

S_IRWXG

00070 pawg tau nyeem, sau ntawv thiab ua kev tso cai

S_IRGRP

00040 pawg tau nyeem ntawv tso cai

S_IWGRP

00020 pawg tau sau ntawv tso cai

S_IXGRP

00010 pawg tau coj kev tso cai

S_IRWXO

00007 lwm tus tau nyeem, sau ntawv thiab ua kev tso cai

S_IROTH

00004 luag tau nyeem ntawv tso cai

S_IWOTH

00002 lwm tus tau sau ntawv tso cai

S_IXOTH

Lwm tus neeg muaj kev tso cai

hom yuav tsum tau sau tseg thaum O_CREAT nyob rau hauv tus chij , thiab yog ignored otherwise.

creat yog sib npaug nrog qhib chij rau O_CREAT | O_WRONLY | O_TRUNC .

RETURN VALUE

qhib thiab creat xa rov qab tus tshiab cov ntaub ntawv descriptor, los yog -1 yog hais tias muaj ib qho yuam kev tshwm sim (nyob rau hauv qhov teeb meem twg, errno yog teem kom tsim nyog). Lus hauv no teb Nco ntsoov tias qhib tau qhib ntaus ntawv tshwj xeeb cov ntaub ntawv, tab sis creat tau 't tsim lawv - siv mknod (2) xwb.

Rau NFS cov ntaub ntawv tshuab nrog UID mapping enabled, qhib tej zaum yuav xa cov ntaub ntawv teev lus, tiam sis xws li nyeem (2) kev thov raug tsis kam nrog EACCES . Qhov no yog vim hais tias tus neeg ua hauj lwm ua tau qhib los ntawm kev kos cov cai, tiam sis UID tus qauv yog ua los ntawm tus neeg rau zaub mov thaum nyeem ntawv thiab sau ntawv thov.

Yog hais tias cov ntaub ntawv yog tsim tshiab, nws lub sijhawm, ctime, mtime liaj teb raug teem rau lub sijhawm tam sim no, thiab yog li cov ctime thiab mtime cov npe ntawm niam txiv cov npe. Txwv tsis pub, yog hais tias cov ntaub ntawv muab kho vim yog O_TRUNC chij, nws cov ctime thiab cov sij hawm mime raug teem rau lub sijhawm tam sim no.

Tsis raug

EEXIST

pathname twb tshwm sim thiab O_CREAT thiab O_EXCL tau siv.

EISDIR

pathname hais txog cov npe thiab cov ntaub ntawv thov kev sau ntaub ntawv (uas yog, O_WRONLY los yog O_RDWR ).

EACCES

Cov lus thov nkag mus rau hauv cov ntaub ntawv tsis pub, los yog ib qho ntawm cov npe hauv pathname tsis pub kev tshawb nrhiav (kev ua txhaum), los yog cov ntaub ntawv tsis muaj nyob thiab sau ntawv nkag mus rau niam txiv cov npe tsis raug tso cai.

ENAMETOOLONG

pathname dhau lawm ntev.

SAUM

O_CREAT tsis teem thiab cov ntaub ntawv teev npe tsis muaj nyob. Los yog, ib qho kev tivthaiv nyob hauv pathname tsis muaj nyob lossis yog ib qhov kev sib txuas ntawm cov cim ntaiv.

ENOTDIR

Ib qho kev tivthaiv siv los ua tus directory hauv pathname tsis yog, qhov tseeb, tus directory, lossis O_DIRECTORY tau teev thiab pathname tsis yog qhov directory.

ENXIO

O_NONBLOCK | O_WRONLY teem caij, cov ntaub ntawv raug teev npe yog ib qho kev sib tw thiab tsis muaj cov txheej txheem qhib cov ntaub ntawv qhib rau kev nyeem ntawv. Los yog, cov ntaub ntawv yog cov ntawv tshwj xeeb ntaus ntawv thiab tsis muaj cov khoom siv sib txuas.

ENODEV

pathname hais txog ib tug ntaus ntawv tshwj xeeb cov ntaub ntawv thiab tsis muaj tus cwj pwm ntaus. (Qhov no yog lub Linux ntsiav kabmob - qhov teeb meem no yuav tsum rov qab ENXIO.)

EROFS

pathname hais txog cov ntaub ntawv ntawm kev nyeem ntawv-tsuas yog cov filesystem thiab sau ntawv nkag.

ETXTBSY

pathname hais txog tus duab executable uas tam sim no yog tseg thiab sau ntawv thov tau thov.

EFAULT

pathname cov ntsiab lus sab nraum koj qhov chaw nyob yooj yim.

ELOOP

Ntau cov leb tau ntsib nyob hauv kev daws teeb meem, los yog O_NOFOLLOW tau teev tseg, tiam sis pathname yog lub cim qhov txuas.

ENOSPC

pathname yog yuav tsum tau tsim tab sis tus ntaus muaj pathname tsis muaj chaw rau cov ntaub ntawv tshiab.

ENOMEM

Kauj ruam tseem ceeb heev yog muaj.

EMFILE

Tus txheej txheem twb muaj ntau qhov qhib cov ntaub ntawv.

ENFILE

Cov kev txwv ntawm tag nrho cov ntaub ntawv qhib rau lub system tau raug hu.

Conforming rau

SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Lub O_NOFOLLOW thiab O_DIRECTORY chij yog Linux -specific. Ib tug yuav tau txhais cov _GNU_SOURCE macro kom lawv txhais cov ntsiab lus.

Kev txwv

Muaj ntau yam kev tsis sib haum xeeb nyob hauv kev cai lij choj NFS, cuam tshuam lwm cov O_SYNC thiab O_NDELAY .

POSIX muab rau peb sib txawv ntawm kev sib txawv ntawm synchronized I / O, sib nug cov chij O_SYNC , O_DSYNC thiab O_RSYNC . Tam sim no (2.1.130) Cov no yog txhua yam tseem ceeb hauv Linux.