Skip to main content

Otvorite Linux Command i Unix Command

Linux Mint 18.3 Sylvia - osnove navigacije kroz sistem (Travanj 2025)

Linux Mint 18.3 Sylvia - osnove navigacije kroz sistem (Travanj 2025)
Anonim

Sinopsis

#include #include #include int otvoren (const char * ime putanje , int zastave ); int otvoren (const char * ime putanje , int zastave , način_t način ); int creat (const char * ime putanje , način_t način );

Opis

otvorena() Linux naredba za sustav poziva koristi se za pretvaranje staze u deskriptor datoteka (mali, ne-negativni cijeli broj za upotrebu u kasnijem I / O kao s čitati, pisati, itd.). Kada je poziv uspješan, descriptor datoteka vratit će se kao najniži deskriptor datoteka koji trenutno nije otvoren za taj proces. Ovaj poziv stvara novu otvorenu datoteku koja se ne dijeli s drugim postupkom. (Ali zajedničke otvorene datoteke mogu se pojaviti putem programaviljuška(2) poziv sustava.) Novi deskriptor datoteka je postavljen da ostane otvoren preko izvršnih funkcija (pogledajfcntl(2)). Offset datoteke je podešen na početak datoteke.

Parametar zastave je jedan odO_RDONLY, O_WRONLY iliO_RDWR koji zahtijevaju otvaranje datoteke samo za čitanje, samo za pisanje ili čitanje / pisanje, odnosno bitno- ili d s nula ili više od sljedećeg:

O_CREAT

Ako datoteka ne postoji, bit će stvoren. Vlasnik (korisnički ID) datoteke je postavljen na učinkovit korisnički ID procesa. Vlasništvo grupe (ID grupa) postavljeno je ili na učinkovitu grupnu ID procesa ili na ID grupe nadređenog imenika (ovisno o vrsti datotečnog sustava i opcijama pri montaži i načinu nadređenog imenika, vidi npr. Montiranje opcije bsdgroups i sysvgroups od ext2 datotečnog sustava, kao što je opisano umontiranje(8)).

O_EXCL

Kada se koristi sO_CREAT, ako datoteka već postoji, to je pogreška iotvorena neće uspjeti. U tom kontekstu postoji simbolična veza, bez obzira na to gdje to ukazuje.O_EXCL je slomljena na NFS datotečnim sustavima, programi koji se oslanjaju na to za obavljanje zadataka zaključavanja sadržavat će stanje utrke. Rješenje za zaključavanje atomske datoteke pomoću zaključanog zapisa je stvaranje jedinstvene datoteke na istom fs (npr., Ugrađivanje naziva hosta i pid), korištenje veze (2) kako bi se povezala s zaporkom. Akoveza() vraća 0, zaključavanje je uspješno. Inače, koristite stat(2) na jedinstvenu datoteku kako biste provjerili je li broj veze povećao na 2, u kojem slučaju je zaključavanje također uspješno.

O_NOCTTY

Ako ime putanje odnosi se na terminalni uređaj - viditTY(4) --- neće postati terminal za upravljanje procesom, čak i ako ga proces ne posjeduje.

O_TRUNC

Ako datoteka već postoji i redovna je datoteka, a otvoreni način dopušta pisanje (tj. O_RDWR ili O_WRONLY), skratit će se do duljine 0. Ako je datoteka datoteka FIFO ili terminalna, zastavica O_TRUNC zanemaruje se. Inače, učinak O_TRUNC nije određen. (Na mnogim Linux verzijama bit će zanemareno, a na ostalim će verzijama vratiti pogrešku.)

O_APPEND

Datoteka je otvorena u načinu dodavanja. Prije svakepisati, pokazivač datoteke nalazi se na kraju datoteke, kao u slučajulseek. O_APPEND može dovesti do oštećenih datoteka na NFS datotečnim sustavima ako više od jednog procesa doda podatke u datoteku odjednom. To je zato što NFS ne podržava pridruživanje datoteci, tako da je kernel klijenta mora simulirati, što se ne može učiniti bez uvjeta utrke.

O_NONBLOCK iliO_NDELAY

Kad je moguće, datoteka se otvara u načinu bez blokiranja. Niti jedanotvorena niti bilo kakve daljnje operacije na datotečnom datoteci koji se vraća uzrokovat će proces pozivanja da pričeka. Za rukovanje FIFO-ima (nazvanim cijevi), također pogledajteFIFO(4). Ovaj način ne smije imati nikakav učinak na druge datoteke osim FIFO-a.

O_SYNC

Datoteka je otvorena za sinkroni I / O. bilo kojipisatis na rezultirajućem deskriptoru datoteke blokirat će postupak zvanja sve dok se podaci fizički ne zapisuju na temeljni hardver. Ipak, pogledajte OGRANIČENJA.

O_NOFOLLOW

Ako ime putanje je simbolična veza, a zatim otvoreni ne uspije. Ovo je FreeBSD produžetak, koji je dodan u Linux u verziji 2.1.126. I dalje će se slijediti simboličke veze u ranijim komponentama staze. Zaglavlja s glibc 2.0.100 i novijih sadrže definiciju te zastave; kernele prije 2.1.126 će ga ignorirati ako se koriste .

O_DIRECTORY

Ako ime putanje nije direktorij, jer otvoreni neuspjeh. Ova je zastava specifična za Linux i dodana je u verziju 2.1.126 kernela, kako bi se izbjegli problemi s uskraćivanjem servisa akoopendir(3) poziva se na FIFO ili vrpcu, ali se ne smije koristiti izvan implementacijeopendir.

O_DIRECT

Pokušajte minimizirati efekte predmemorije I / O na i iz ove datoteke. Općenito to će degradirati performanse, ali je korisno u posebnim situacijama, primjerice kada aplikacije vrše svoje predmemoriranje. Datoteka I / O se vrši izravno na / iz korisničkih pufera. I / O je sinkroni, tj. Po završetku čitati(2) ilipisati(2) poziv sustava, podaci se zasigurno prenose. Veličine prijenosa i poravnavanje korisničkih međuspremnika i datoteka moraju biti višekratnici logičke veličine datotečnog sustava.Ta je oznaka podržana na više Unixovih sustava; podrška je dodana pod Linuxom u verziji 2.4.10 kernela.Opisano je semantički slično sučelje za blokovesirov(8).

O_ASYNC

Generirajte signal (SIGIO prema zadanim postavkama, ali to se može promijeniti putemfcntl(2)) kada ulaz ili izlaz postaje moguć na ovom deskriptoru datoteka. Ova je značajka dostupna samo za terminale, pseudo-terminale i utičnice. Vidjetifcntl(2) za daljnje pojedinosti.

O_LARGEFILE

Na 32-bitnim sustavima koji podržavaju Large Files System, dozvoljavaju se datoteke čije se veličine ne mogu prikazati u 31 bita da budu otvorene.

Neke od ovih neobaveznih zastavica mogu se mijenjati pomoćufcntl nakon što je datoteka otvorena.

Argument način određuje dopuštenja za upotrebu u slučaju stvaranja nove datoteke. Promijenjen je procesomumask na uobičajeni način: dopuštenja stvorene datoteke su(način & umas), Imajte na umu da se ovaj način odnosi samo na buduće pristupnice novo stvorene datoteke;otvorenapoziv koji stvara datoteku samo za čitanje može dobro vratiti deskriptor datoteka za čitanje / pisanje.

Sljedeće simboličke konstante su predviđene način :

S_IRWXU

00700 korisnik (vlasnik datoteke) je pročitao, napisao i izvršio dozvolu

S_IRUSR (S_IREAD)

00400 korisnik je pročitao dopuštenje

S_IWUSR (S_IWRITE)

00200 korisnik ima dopuštenje za pisanje

S_IXUSR (S_IEXEC)

Korisnik 00100 izvršio je dopuštenje

S_IRWXG

00070 grupa je pročitao, napisao i izvršio dozvolu

S_IRGRP

00040 grupa je pročitala dopuštenje

S_IWGRP

00020 grupa ima dopuštenje za pisanje

S_IXGRP

00010 grupa je izvršila dopuštenje

S_IRWXO

00007 drugi su pročitali, pisali i izvršili dopuštenje

S_IROTH

Ostali 00004 imaju dopuštenje za čitanje

S_IWOTH

Ostali 00002 imaju dopuštenje za pisanje

S_IXOTH

00001 ostali su izvršili dopuštenje

način mora se navesti kadaO_CREAT je u zastave , i drugačije se zanemaruje.

kreiran je ekvivalentanotvorena s zastave jednakO_CREAT | O_WRONLY | O_TRUNC.

POVRATNA VRIJEDNOST

otvorena ikreiran vratiti novi deskriptor datoteka ili -1 ako se dogodila pogreška (u tom slučaju, errno je postavljen na odgovarajući način). Imajte na umu daotvorena mogu otvoriti posebne datoteke uređaja, alikreiran ne mogu ih stvoriti - koristitimknod(2).

Na NFS datotečnim sustavima s omogućenim mapiranjem UID,otvorena može vratiti deskriptor datoteka, npr. čitati(2) zahtjevi su odbijeni saEACCES, To je zato što klijent izvodiotvorena provjerom dopuštenja, ali UID mapiranje obavlja poslužitelj nakon čitanja i pisanja zahtjeva.

Ako je datoteka nedavno kreirana, njegovi atime, ctime, mtime polja su postavljeni na trenutačno vrijeme, kao i polja ctime i mtime roditeljskog direktorija. U suprotnom, ako je datoteka izmijenjena zbog oznake O_TRUNC, polja ctime i mtime postavljena su na trenutačno vrijeme.

greške

EEXIST

ime putanje već postoji iO_CREAT iO_EXCL su korišteni.

EISDIR

ime putanje odnosi se na imenik i pristup koji se traži uključuje pisanje (tj.O_WRONLY iliO_RDWR je postavljen).

EACCES

Zatraženi pristup datoteci nije dopušten ili je jedan od direktorija u sustavu ime putanje nije dopušteno pretraživanje (izvršavanje) ili datoteka još nije postojala i nije dopušten pristup pisma roditeljskog direktorija.

ENAMETOOLONG

ime putanje bio je predug.

ENOENT

O_CREAT nije postavljen i navedena datoteka ne postoji. Ili, komponenta direktorija u sustavu ime putanje ne postoji ili je vješta simbolička veza.

ENOTDIR

Komponenta koja se koristi kao direktorij u sustavu ime putanje zapravo nije direktorij, iliO_DIRECTORYje specificiran i ime putanje nije bio direktorij.

ENXIO

O_NONBLOCK | O_WRONLY je postavljen, nazvana datoteka je FIFO i nema procesa koji ima otvorenu datoteku za čitanje. Ili, datoteka je posebna datoteka uređaja i ne postoji odgovarajući uređaj.

ENODEV

ime putanje odnosi se na posebnu datoteku uređaja i nema odgovarajućeg uređaja. (Ovo je Linux kernel bug - u ovoj situaciji ENXIO se mora vratiti.)

EROFS

ime putanje odnosi se na datoteku na datotečnom sustavu samo za čitanje i zahtijeva se pristup za pisanje.

ETXTBSY

ime putanje odnosi se na izvršnu sliku koja se trenutno izvodi i zahtijeva se pisanje.

EFAULT

ime putanje bodova izvan dostupnog adresnog prostora.

ELOOP

Previše simboličkih veza naišlo je na rješavanje ime putanje , iliO_NOFOLLOW je navedeno, ali ime putanje bila je simbolična veza.

ENOSPC

ime putanje trebalo je stvoriti, ali uređaj koji sadrži ime putanje nema mjesta za novu datoteku.

ENOMEM

Dostupna je nedovoljna memorija jezgre.

EMFILE

Proces već ima maksimalan broj datoteka otvorenih.

ENFILE

Dosegnuto je ograničenje ukupnog broja otvorenih datoteka na sustavu.

U skladu s

SVr4, SVID, POSIX, X / OPEN, BSD 4.3O_NOFOLLOW iO_DIRECTORY zastave su specifične za Linux. Možda ćete morati definirati_GNU_SOURCE makro kako bi dobili njihove definicije.

ograničenja

U protokolima koji se nalaze pod NFS-om postoje mnoge nevjere, koje utječu među ostalimaO_SYNC iO_NDELAY.

POSIX omogućuje tri različite inačice sinkroniziranog I / O, koji odgovaraju zastavamaO_SYNC , O_DSYNC i O_RSYNC, Trenutno (2.1.130) sve su to sinonimne pod Linuxom.