Skip to main content

Åbn Linux Command og Unix Command

How to hook up hard start kit on air conditioning system (Juni 2026)

How to hook up hard start kit on air conditioning system (Juni 2026)
Anonim

Synopsis

#omfatte #omfatte #omfatte int åben (const char * stinavn , int flag ); int åben (const char * stinavn , int flag , mode_t mode ); int creat (const char * stinavn , mode_t mode );

Beskrivelse

Detåben() systemopkald linux kommando bruges til at konvertere et stinavn til en filbeskrivelse (et lille, ikke-negativt heltal til brug i efterfølgende I / O som med Læs, skrive, etc.). Når opkaldet er vellykket, vil den returnerede filbeskrivelse blive den laveste filbeskrivelse, der ikke er åben for processen. Dette opkald opretter en ny åben fil, der ikke deles med en anden proces. (Men delte åbne filer kan opstå viagaffel(2) systemopkald.) Den nye filbeskrivelse er indstillet til at forblive åben over exec-funktioner (sefcntl(2)). Filforskydningen er indstillet til begyndelsen af ​​filen.

Parameteren flag er en afO_RDONLY, O_WRONLY ellerO_RDWR hvilken anmodning åbner filen kun skrivebeskyttet, skrivebeskyttet eller læs / skriv henholdsvis bitvis- eller 'd med nul eller flere af følgende:

O_CREAT

Hvis filen ikke findes, oprettes den. Ejerens (bruger-id) af filen er indstillet til procesens effektive bruger-id. Gruppens ejerskab (gruppe-id) er indstillet enten til processens effektive gruppe-id eller til stamkatalogens gruppe-id (afhængigt af filsystemtype og monteringsindstillinger og moden til moderkataloget, se f.eks. Monteringen muligheder bsdgroups og sysvgroups af ext2 filsystemet, som beskrevet imount(8)).

O_EXCL

Når den bruges sammen medO_CREAT, hvis filen allerede eksisterer, er det en fejl ogåben vil mislykkes. I denne sammenhæng eksisterer der en symbolsk forbindelse, uanset hvor den peger på.O_EXCL er brudt på NFS filsystemer, vil programmer, der er afhængige af det til udførelse af låsningsopgaver, indeholde en løbskondition. Løsningen til at udføre atomfillåsning ved hjælp af et låseblad er at oprette en unik fil på samme fs (fx med værtsnavn og pid), brug link (2) for at danne et link til låsebladet. Hvislink() returnerer 0, låsen er vellykket. Ellers skal du bruge stat(2) på den unikke fil for at kontrollere, om dens link tæller er steget til 2, i hvilket tilfælde låsen også er vellykket.

O_NOCTTY

Hvis stinavn henviser til en terminal enhed --- setty(4) --- det bliver ikke procesens kontrolterminal, selvom processen ikke har en.

O_TRUNC

Hvis filen allerede eksisterer og er en almindelig fil, og den åbne tilstand tillader skrivning (det vil sige O_RDWR eller O_WRONLY), bliver den afkortet til længde 0. Hvis filen er en FIFO- eller terminalenhedsfil, ignoreres O_TRUNC-flagget. Ellers er effekten af ​​O_TRUNC uspecificeret. (På mange Linux versioner vil det blive ignoreret; i andre versioner vil det returnere en fejl.)

O_APPEND

Filen åbnes i append-tilstand. Før hverskrive, er filpegeren placeret i slutningen af ​​filen, som om medlseek. O_APPEND kan føre til ødelagte filer på NFS-filsystemer, hvis mere end én proces tilføjer data til en fil på én gang. Dette skyldes, at NFS ikke understøtter tilføjelse til en fil, så klientkernen skal simulere det, hvilket ikke kan gøres uden løbskondition.

O_NONBLOCK ellerO_NDELAY

Når det er muligt, åbnes filen i ikke-blokeringstilstand. Hverkenåben eller eventuelle efterfølgende operationer på filbeskrivelsen, som returneres, vil få opkaldsprocessen til at vente. For håndtering af FIFO'er (navngivne rør), se ogsåFIFO(4). Denne tilstand behøver ikke at have nogen virkning på andre filer end FIFO'er.

O_SYNC

Filen åbnes for synkron I / O. Nogenskrives på den resulterende filbeskrivelse vil blokere opkaldsprocessen, indtil dataene er blevet fysisk skrevet til den underliggende hardware. Se dog begrænsninger nedenfor.

O_NOFOLLOW

Hvis stinavn er et symbolsk link, så åbner den åbne. Dette er en FreeBSD-udvidelse, som blev tilføjet til Linux i version 2.1.126. Symboliske links i tidligere komponenter i stinavnet vil stadig blive fulgt. Overskrifterne fra glibc 2.0.100 og senere indeholder en definition af dette flag; kerner før 2.1.126 vil ignorere det, hvis det bruges .

O_DIRECTORY

Hvis stinavn er ikke en mappe, fordi den er åben for at mislykkes. Dette flag er Linux-specifikt, og blev tilføjet i kernel version 2.1.126 for at undgå problemer med benægtelse af service, hvisopendir(3) kaldes en FIFO eller tape enhed, men bør ikke bruges uden for implementeringen afopendir.

O_DIRECT

Prøv at minimere cache effekter af I / O til og fra denne fil. Generelt vil dette nedbryde ydeevnen, men det er nyttigt i særlige situationer, f.eks. Når applikationer gør deres eget caching. Fil I / O udføres direkte til / fra brugerrumsbuffere. I / O'en er synkron, dvs. ved afslutningen af Læs(2) ellerskrive(2) systemopkald, data er garanteret at være blevet overført. Overførelsesstørrelser og justering af brugerbuffer og filforskydning skal alle være multipler af filsystemets logiske blokstørrelse.Dette flag understøttes på en række Unix-lignende systemer; Support blev tilføjet under Linux i kernel version 2.4.10.En semantisk lignende grænseflade til blokindretninger er beskrevet i(8).

O_ASYNC

Generer et signal (SIGIO som standard, men det kan ændres viafcntl(2)), når input eller output bliver muligt på denne filbeskrivelse. Denne funktion er kun tilgængelig til terminaler, pseudo-terminaler og stikkontakter. Sefcntl(2) for yderligere detaljer.

O_LARGEFILE

På 32-bit systemer, der understøtter Large Files System, tillader filer, hvis størrelser ikke kan repræsenteres i 31 bits, der skal åbnes.

Nogle af disse valgfrie flag kan ændres ved hjælp affcntl efter at filen er åbnet.

Argumentet mode Angiver tilladelserne til brug, hvis en ny fil oprettes. Det ændres af procesensumask på den sædvanlige måde: tilladelserne til den oprettede fil er(mode & umask). Bemærk, at denne tilstand kun gælder for fremtidige adgang til den nyoprettede fil; detåbenOpkald, der opretter en skrivebeskyttet fil, kan muligvis returnere en læse / skrive filbeskrivelse.

Følgende symbolske konstanter er tilvejebragt mode :

S_IRWXU

00700 bruger (fil ejer) har læst, skrevet og udført tilladelse

S_IRUSR (S_IREAD)

00400 bruger har læst tilladelse

S_IWUSR (S_IWRITE)

00200 bruger har skrive tilladelse

S_IXUSR (S_IEXEC)

00100 bruger har fuldbyrdelses tilladelse

S_IRWXG

00070-gruppen har læst, skrevet og udført tilladelse

S_IRGRP

00040 gruppe har læst tilladelse

S_IWGRP

00020 gruppen har skrive tilladelse

S_IXGRP

00010 gruppen har fuldbyrdelses tilladelse

S_IRWXO

00007 andre har læst, skrevet og udført tilladelse

S_IROTH

00004 andre har læst tilladelse

S_IWOTH

00002 andre har skrive tilladelse

S_IXOTH

00001 andre har fuldbyrdelses tilladelse

mode skal angives, nårO_CREAT er i flag , og ignoreres ellers.

creat svarer tilåben med flag svarende tilO_CREAT | O_WRONLY | O_TRUNC.

TILBAGEVÆRDI

åben ogcreat returner den nye filbeskrivelse, eller -1 hvis der opstod en fejl (i hvilket tilfælde errno er indstillet passende). Noter detåben kan åbne enheden specielle filer, mencreat kan ikke oprette dem - brugmknod(2) i stedet.

På NFS-filsystemer med UID-mapping aktiveret,åben kan returnere en filbeskrivelse, men f.eks. Læs(2) anmodninger nægtes medEACCES. Dette skyldes, at klienten udføreråben ved at kontrollere tilladelserne, men UID-kortlægning udføres af serveren ved læsnings- og skriveforespørgsler.

Hvis filen er nyoprettet, er dens atime, ctime, mtime felter indstillet til den aktuelle tid, og det er også ctime og mtime felterne i overordnet mappe. Ellers, hvis filen er ændret på grund af O_TRUNC-flag, er dens ctime og mtime felter indstillet til den aktuelle tid.

fejl

EEXIST

stinavn eksisterer allerede ogO_CREAT ogO_EXCL blev brugt.

EISDIR

stinavn henviser til en mappe og den anmodede adgang involverede skrivning (det vil sige,O_WRONLY ellerO_RDWR er indstillet).

EACCES

Den ønskede adgang til filen er ikke tilladt, eller en af ​​mapper i stinavn Tillad ikke tilladelse til søgning (eksekvering), eller filen eksisterede endnu ikke, og skriveadgang til overordnet mappe er ikke tilladt.

ENAMETOOLONG

stinavn var for lang.

ENOENT

O_CREAT er ikke angivet, og den navngivne fil eksisterer ikke. Eller en mappe komponent i stinavn eksisterer ikke eller er en dangling symbolsk link.

ENOTDIR

En komponent, der bruges som en mappe i stinavn er faktisk ikke en mappe ellerO_DIRECTORYblev specificeret og stinavn var ikke en mappe.

ENXIO

O_NONBLOCK | O_WRONLY er indstillet, den navngivne fil er en FIFO, og ingen proces har filen åben til læsning. Eller filen er en enhed speciel fil, og der findes ingen tilsvarende enhed.

ENODEV

stinavn henviser til en speciel enhedens enhed, og der findes ingen tilsvarende enhed. (Dette er en Linux kernel bug - i denne situation skal ENXIO returneres.)

EROFS

stinavn henviser til en fil på et skrivebeskyttet filsystem, og der blev anmodet om skriveadgang.

ETXTBSY

stinavn henviser til et eksekverbart billede, der aktuelt udføres, og der blev anmodet om skriveadgang.

tandardfarve

stinavn punkter uden for dit tilgængelige adresserum.

ELOOP

Der blev fundet for mange symbolske links i løsningen stinavn , ellerO_NOFOLLOW blev specificeret men stinavn var et symbolsk link.

ENOSPC

stinavn skulle oprettes, men enheden indeholder stinavn har ikke plads til den nye fil.

ENOMEM

Utilstrækkelig kernehukommelse var tilgængelig.

EMFILE

Processen har allerede det maksimale antal filer åbent.

ENFILE

Grænsen for det samlede antal filer, der er åbnet på systemet, er nået.

Overensstemmende med

SVr4, SVID, POSIX, X / ÅBEN, BSD 4.3O_NOFOLLOW ogO_DIRECTORY Flag er Linux-specifikke. Man må muligvis definere_GNU_SOURCE makro for at få deres definitioner.

Begrænsninger

Der er mange infeliciteter i protokollen underliggende NFS, der påvirker blandt andetO_SYNC ogO_NDELAY.

POSIX giver mulighed for tre forskellige varianter af synkroniseret I / O, svarende til flageneO_SYNC , O_DSYNC og O_RSYNC. I øjeblikket (2.1.130) er disse alle synonymt under Linux.