Skip to main content

Avaa Linux Command ja Unix Command

CLONEZILLA Finnish learning Lubuntu - opi suomea Linux-tikulla (Kesäkuu 2026)

CLONEZILLA Finnish learning Lubuntu - opi suomea Linux-tikulla (Kesäkuu 2026)
Anonim

tiivistelmä

#sisältää #sisältää #sisältää int open (const char * polku , int liput ); int open (const char * polku , int liput , mode_t tila ); int creat (const char * polku , mode_t tila );

Kuvaus

avata() system call linux -komentoa käytetään muuntamaan polun nimi tiedoston kuvaajaksi (pieni, ei-negatiivinen kokonaisluku käytettäväksi seuraavassa I / O: ssa, kuten lukea, kirjoittaa, jne.). Kun puhelu onnistuu, tiedostojen kuvaaja palautetaan mahdollisimman pieneksi tiedostojen kuvaajaksi, joka ei ole tällä hetkellä avoinna prosessille. Tämä puhelu luo uuden avoimen tiedoston, jota ei ole jaettu mihinkään muuhun prosessiin. (Mutta jaetut avoimet tiedostot voivat syntyähaarukka(2) järjestelmäpuhelu.) Uusi tiedostonkuvaaja on asetettu pysymään avoimina kaikkiin exec-toimintoihin (ksfcntl(2)). Tiedostosiirtymä on asetettu tiedoston alkuun.

Parametri liput on yksiO_RDONLY, O_WRONLY taiO_RDWR jotka pyytävät tiedoston avaamista vain luku-, kirjoitus- tai lukea / kirjoittaa vastaavasti bit- tai d jossa on nolla tai useampi seuraavista:

O_CREAT

Jos tiedostoa ei ole olemassa, se luodaan. Tiedoston omistaja (käyttäjätunnus) on määritetty prosessin tehokkaaksi käyttäjätunnukseksi. Ryhmän omistus (ryhmä-ID) asetetaan joko prosessin tehokkaaseen ryhmätunnisteeseen tai vanhemman hakemiston ryhmätunnisteeseen (riippuen tiedostojärjestelmän tyypistä ja asennusvaihtoehdoista sekä vanhemman hakemiston moodista, katso esim. vaihtoehtoja bsdgroups ja sysvgroups ext2 - tiedostojärjestelmästä, kuten kuvataan kohdassaasentaa(8)).

O_EXCL

KäytettäessäO_CREAT, jos tiedosto on jo olemassa, se on virhe jaavata tulee epäonnistumaan. Tässä yhteydessä symbolinen yhteys on olemassa, riippumatta siitä, mihin se viittaa.O_EXCL on rikki NFS-tiedostojärjestelmissä, ohjelmat, jotka luottavat siihen lukitustöiden suorittamiseen, sisältävät kilpailutilan. Ratkaisu ydinlukituksen suorittamiseen lukitustiedoston avulla on luoda samalle tiedostolle samat fs: t (esim. Sisällyttämällä isäntänimeä ja pid), linkin käyttäminen linkin avulla (lockfile). Joslinkki() palauttaa 0, lukitus onnistuu. Muussa tapauksessa käytä stat(2) ainutkertaisesta tiedostosta sen tarkistamiseksi, onko sen linkkien määrä kasvanut 2: een, jolloin lukko onnistuu.

O_NOCTTY

Jos polku viittaa päätelaitteeseen --- katsotty(4) --- se ei tule prosessin ohjauspäätteeksi, vaikka prosessissa ei olisi sitä.

O_TRUNC

Jos tiedosto on jo olemassa ja se on tavallinen tiedosto ja avoin tila sallii kirjoittaa (eli O_RDWR tai O_WRONLY), se katkaistaan ​​pituudeksi 0. Jos tiedosto on FIFO- tai päätelaitatiedosto, O_TRUNC-lippu jätetään huomiotta. Muutoin O_TRUNCin vaikutus ei ole täsmennetty. (Monissa Linux-versioissa sitä ei oteta huomioon, muissa versioissa se palauttaa virheen.)

O_APPEND

Tiedosto avataan lisäystilassa. Ennen jokaistakirjoittaa, tiedoston osoitin sijoitetaan tiedoston loppuun, ikään kuin joslseek. O_APPEND saattaa aiheuttaa vioittuneita tiedostoja NFS-tiedostojärjestelmissä, jos useampi kuin yksi prosessi liittää tietoja tiedostoon kerralla. Tämä johtuu siitä, että NFS ei tue tiedoston liittämistä, joten asiakkaan ytimen on simuloitava se, jota ei voida tehdä ilman kilpailuedellytyksiä.

O_NONBLOCK taiO_NDELAY

Aina kun mahdollista, tiedosto avautuu estotilassa. Eiavata eikä palautettavalle tiedoston kuvaajan myöhempää toimintaa aiheuta kutsuvan prosessin odottamaan. Katso myös FIFO: n (nimettyjen putkien) käsittelyä vartenFIFO(4). Tässä tilassa ei tarvitse olla vaikutusta muihin tiedostoihin kuin FIFO-tiedostoihin.

O_SYNC

Tiedosto avataan synkroniselle I / O: lle. Minkä tahansakirjoittaas tuloksena oleva tiedostojen kuvaaja estää kutsuprosessin, kunnes tiedot on kirjoitettu fyysisesti peruslaitteistoon. Katso kuitenkin alla olevat RAJOITUKSET.

O_NOFOLLOW

Jos polku on symbolinen linkki, sitten avoin epäonnistuu. Tämä on FreeBSD-laajennus, joka lisättiin Linuxiin versiossa 2.1.126. Jatkossa on edelleen symbolien linkkejä aiempien komentotiedostojen osissa. Glibc 2.0.100: n ja sen myöhemmissä otsakkeissa on tämän lipun määritelmä; ytimet ennen 2.1.126 sivuuttaa sen, jos sitä käytetään .

O_DIRECTORY

Jos polku ei ole hakemisto, aiheuttaa avoimen epäonnistumisen. Tämä lippu on Linux-spesifinen, ja se lisättiin ydinversioon 2.1.126, jotta vältetään palvelunestohäiriöt, josopendir(3) kutsutaan FIFO - tai nauha - laitteeksi, mutta sitä ei saa käyttää ohjelman toteutuksen ulkopuolellaopendir.

O_DIRECT

Yritä minimoida I / O-välimuistitoiminnot tähän tiedostoon. Yleensä tämä heikentää suorituskykyä, mutta se on hyödyllinen erityistilanteissa, kuten silloin, kun sovellukset tekevät omat välimuistinsa. Tiedoston I / O-tiedosto suoritetaan suoraan käyttäjän avaruustukiasemiin. I / O on synkroninen, ts lukea(2) taikirjoittaa(2) järjestelmäpuhelu, tiedot on taattu siirretty. Siirron koot ja käyttäjäpuskurin ja tiedostosiirron kohdistaminen on oltava tiedostojärjestelmän loogisen lohkokokoelman monikertoja.Tätä lippua tukee useilla Unix-kaltaisilla järjestelmillä. tuki lisättiin Linuxissa ytimen versioon 2.4.10.Kuviossa on kuvattu semanttisesti samanlainen liitäntä lohkolaitteilleraaka(8).

O_ASYNC

Luo signaali (SIGIO oletusarvoisesti, mutta sitä voidaan muuttaafcntl(2)), kun tulo tai ulostulo on mahdollinen tässä tiedoston kuvaajassa. Tämä ominaisuus on käytettävissä vain päätelaitteille, pseudoterminaaleille ja pistorasioille. nähdäfcntl(2) lisätietoja.

O_LARGEFILE

32-bittisissä järjestelmissä, jotka tukevat suurta tiedostojärjestelmää, sallivat tiedostot, joiden kokoa ei voida edustaa 31 bittiä avattavissa.

Joitakin näistä valinnaisista lipuista voidaan muuttaa käyttämälläfcntl kun tiedosto on avattu.

Argumentti tila määrittää käyttöoikeudet, jos uusi tiedosto luodaan. Sitä muokataan prosessin avullaumask tavallisella tavalla: luodun tiedoston oikeudet ovat(tila & ~ umask). Huomaa, että tämä tila koskee vain äskettäin luotujen tiedostojen tulevia käyttöoikeuksia.avatapuhelu, joka luo vain luettavissa olevan tiedoston, saattaa palauttaa luku- / kirjoitustiedoston kuvaajan.

Seuraavat symboliset vakiot on säädetty tila :

S_IRWXU

00700 käyttäjä (tiedoston omistaja) on lukenut, kirjoitanut ja suorittanut luvan

S_IRUSR (S_IREAD)

00400 käyttäjällä on lupaa

S_IWUSR (S_IWRITE)

00200 käyttäjällä on kirjoitusoikeus

S_IXUSR (S_IEXEC)

00100 käyttäjä on suorittanut luvan

S_IRWXG

00070-ryhmä on lukenut, kirjoitanut ja suorittanut luvan

S_IRGRP

00040 ryhmä on lukenut luvan

S_IWGRP

00020-ryhmässä on kirjoitusoikeus

S_IXGRP

00010-ryhmä on suorittanut luvan

S_IRWXO

00007 toiset ovat lukeneet, kirjoittaneet ja suorittavat lupaa

S_IROTH

00004 toiset ovat lukeneet luvan

S_IWOTH

00002 muilla on kirjoitusoikeus

S_IXOTH

00001 muuta ovat suorittaneet luvan

tila on määritettävä, milloinO_CREAT on liput , eikä sitä muuten huomioida.

creat vastaaavata kanssa liput yhtä kuinO_CREAT | O_WRONLY | O_TRUNC.

PALAUTUSARVO

avata jacreat palauta uusi tiedostojen kuvaaja tai -1, jos tapahtui virhe (tässä tapauksessa, errno on asetettu asianmukaisesti). Ota huomioon, ettäavata voi avata laitteeseen erikoistiedostot, muttacreat ei voi luoda niitä - käyttäämknod(2) sijaan.

NFS-tiedostojärjestelmissä, joissa UID-kartoitus on otettu käyttöön,avata voi palauttaa tiedoston kuvaajan, esim. lukea(2) pyynnöt kielletäänEACCES. Tämä johtuu siitä, että asiakas suorittaaavata tarkistamalla käyttöoikeudet, mutta palvelin suorittaa UID-kartoituksen, kun lukee ja kirjoittaa pyynnöt.

Jos tiedosto on äskettäin luotu, sen atime, ctime, mtime kentät asetetaan nykyiseen ajankohtaan, samoin ovat myös emolevyn ctime- ja mtime-kentät. Muussa tapauksessa, jos tiedostoa muutetaan O_TRUNC-flagin vuoksi, sen ctime- ja mtime-kentät asetetaan nykyiseen aikaan.

virheet

EEXIST

polku jo olemassa jaO_CREAT jaO_EXCL käytettiin.

EISDIR

polku viittaa hakemistoon ja pyydettyyn käyttöoikeuteen liittyen kirjallisesti (toisin sanoen,O_WRONLY taiO_RDWR on asetettu).

EACCES

Pyydetty pääsy tiedostoon ei ole sallittu tai jokin hakemistoista on polku ei sallinut haun (suorita) lupaa tai tiedostoa ei vielä ole ja kirjoitusoikeus vanhemman hakemistoon ei ole sallittua.

ENAMETOOLONG

polku oli liian pitkä.

ENOENT

O_CREAT ei ole asetettu eikä nimettyä tiedostoa ole olemassa. Tai, hakemistokomponentti vuonna polku ei ole olemassa tai on roikkuvan symbolinen linkki.

ENOTDIR

Hakemistoon käytettävä osa polku ei itse asiassa ole hakemisto, taiO_DIRECTORYja polku ei ollut hakemisto.

ENXIO

O_NONBLOCK | O_WRONLY on asetettu, nimetty tiedosto on FIFO eikä prosessi ole tiedostoa avoin lukemista varten. Tai tiedosto on laitekohtainen tiedosto eikä vastaavaa laitetta ole.

ENODEV

polku tarkoittaa laitekohtaista tiedostoa, eikä vastaavaa laitetta ole. (Tämä on Linux-ytimen virhe - tässä tilanteessa ENXIO on palautettava.)

EROFS

polku viittaa tiedostoon vain luku-tiedostojärjestelmässä ja kirjoitusoikeutta pyydettiin.

ETXTBSY

polku viittaa suoritettavaan kuvaan, jota parhaillaan suoritetaan ja kirjoitusoikeutta pyydetään.

EFAULT

polku pisteitä käytettävissä olevan osoitetilan ulkopuolella.

ELoop

Liian monta symbolista linkkiä kohdattiin ratkaisemisessa polku , taiO_NOFOLLOW oli määritelty, mutta polku oli symbolinen linkki.

ENOSPC

polku oli tarkoitus luoda, mutta laite sisältää polku ei ole tilaa uudelle tiedostolle.

ENOMEM

Kernelimuisti oli riittämätön.

EMFILE

Prosessissa on jo enimmäismäärä tiedostoja auki.

ENFILE

Järjestelmän avoimien tiedostojen kokonaismäärä on saavutettu.

Täyttää

SVr4, SVID, POSIX, X / OPEN, BSD 4.3O_NOFOLLOW jaO_DIRECTORY liput ovat Linux-spesifisiä. Yksi voi joutua määrittelemään_GNU_SOURCE makro saada määritelmät.

rajoitukset

NFS: n taustalla olevassa protokollassa on monia epäkohtia, jotka vaikuttavat muun muassaO_SYNC jaO_NDELAY.

POSIX tarjoaa kolme eri tahdistettua I / O-versiota, jotka vastaavat lippujaO_SYNC , O_DSYNC ja O_RSYNC. Tällä hetkellä (2.1.130) nämä ovat kaikki yhtä Linuxissa.