Skip to main content

Öppna Linux Command och Unix Command

How To Find The Copyright Symbol On The Keyboard (April 2025)

How To Find The Copyright Symbol On The Keyboard (April 2025)
Anonim

Synopsis

#inkludera #inkludera #inkludera int öppen (const char * sökvägsnamn , int flaggor ); int öppen (const char * sökvägsnamn , int flaggor , mode_t läge ); int creat (const char * sökvägsnamn , mode_t läge );

Beskrivning

Deöppna() systemkommando linux kommando används för att konvertera ett söknamn till en filbeskrivare (ett litet, icke-negativt heltal för användning i efterföljande I / O som med läsa, skriva, etc.). När samtalet är framgångsrikt kommer den returnerade filbeskrivaren att vara den lägsta filbeskrivaren som inte är öppen för processen. Detta samtal skapar en ny öppen fil, som inte delas med någon annan process. (Men delade öppna filer kan uppstå viagaffel(2) systemsamtal.) Den nya filbeskrivaren är inställd att förbli öppen över exec-funktionerna (sefcntl(2)). Filförskjutningen är inställd till början av filen.

Parametern flaggor är en avO_RDONLY, O_WRONLY ellerO_RDWR vilken förfrågan som öppnar filen skrivskyddad, skrivskyddad eller läs / skriv, respektive bitvis- eller 'd med noll eller flera av följande:

O_CREAT

Om filen inte finns kommer den att skapas. Ägaren (användar-ID) för filen är inställd på processens effektiva användar-ID. Gruppägandet (grupp-ID) är inställt antingen på processens effektiva grupp-ID eller till grupp-ID för moderkatalogen (beroende på filsystemtyp och monteringsalternativ och moderkatalogens läge, se t.ex. monteringen alternativ bsdgroups och sysvgroups av ext2-filsystemet, som beskrivs imontera(8)).

O_EXCL

När den används medO_CREAT, om filen redan existerar är det ett fel ochöppna kommer misslyckas. I det här sammanhanget finns en symbolsk länk, oavsett var den pekar på.O_EXCL bryts på NFS-filsystem, kommer program som bygger på det för att utföra låsningsuppgifter kommer att innehålla ett tävlingsförhållande. Lösningen för att utföra atomfilslåsning med hjälp av en låsfil är att skapa en unik fil på samma fs (t.ex. med värdnamn och pid), använd länk (2) för att länka till låsfilen. Omlänk() returnerar 0, låset är framgångsrikt. Annars, använd statistik(2) på den unika filen för att kontrollera om dess länkräkning har ökat till 2, i vilket fall låset också lyckas.

O_NOCTTY

Om sökvägsnamn refererar till en terminal enhet --- setty(4) --- det blir inte processens kontrollterminal även om processen inte har någon.

O_TRUNC

Om filen redan existerar och är en vanlig fil och det öppna läget tillåter skrivning (dvs O_RDWR eller O_WRONLY) kommer det att styras till längd 0. Om filen är en FIFO- eller terminalenhetsfil ignoreras O_TRUNC-flaggan. Annars är effekten av O_TRUNC ospecificerad. (På många Linux-versioner kommer det att ignoreras; i andra versioner kommer det att returnera ett fel.)

O_APPEND

Filen öppnas i append-läge. Före varjeskriva, är filpekaren placerad i slutet av filen, som om medlseek. O_APPEND kan leda till skadade filer på NFS-filsystem om mer än en process lägger till data i en fil samtidigt. Detta beror på att NFS inte stöder bifogad fil, så klientkärnan måste simulera det, vilket inte kan ske utan ett tävlingsförhållande.

O_NONBLOCK ellerVID FÖRDRÖJNING

När det är möjligt öppnas filen i icke-blockerande läge. Varkenöppna eller några efterföljande operationer i filbeskrivningen som returneras kommer att leda till att anropsprocessen väntar. För hantering av FIFO (namngivna rör), se ävenfifo(4). Det här läget behöver inte ha någon effekt på andra filer än FIFO.

O_SYNC

Filen öppnas för synkron I / O. Någraskrivas på den resulterande filbeskrivaren blockerar anropsprocessen tills data har skrivits fysiskt till den underliggande hårdvaran. Se dock BEGRÄNSNINGAR nedan.

O_NOFOLLOW

Om sökvägsnamn är en symbolisk länk, då öppnas inte. Detta är en FreeBSD-tillägg, som läggs till i Linux i version 2.1.126. Symboliska länkar i tidigare komponenter i söknamnet följer fortfarande. Rubrikerna från glibc 2.0.100 och senare innehåller en definition av denna flagga; kärnor före 2.1.126 kommer att ignorera det om det används .

O_DIRECTORY

Om sökvägsnamn är inte en katalog, orsaka att det går att misslyckas. Den här flaggan är Linux-specifik och läggs till i kärnversion 2.1.126, för att undvika problem med nekad service omopendir(3) kallas på en FIFO- eller bandanordning, men bör inte användas utanför genomförandet avopendir.

O_DIRECT

Försök att minimera cache-effekterna av I / O-filen till och från den här filen. Generellt kommer detta att försämra prestanda, men det är användbart i speciella situationer, t.ex. när applikationer gör sin egen caching. Fil I / O görs direkt till / från användarens rymdbuffertar. I / O är synkron, dvs vid fullbordandet av läsa(2) ellerskriva(2) systemsamtal, data garanteras ha överförts. Överföringsstorlekar och justering av användarbuffert och filförskjutning måste alla vara multiplar av filsystemets logiska blockstorlek.Denna flagga stöds på ett antal Unix-liknande system; stöd lades till under Linux i kärnversion 2.4.10.Ett semantiskt liknande gränssnitt för blockanordningar beskrivs i(8).

O_ASYNC

Generera en signal (SIGIO som standard, men det kan ändras viafcntl(2)) när ingång eller utgång blir möjlig på denna filbeskrivare. Denna funktion är endast tillgänglig för terminaler, pseudo-terminaler och uttag. Sefcntl(2) för ytterligare detaljer.

O_LARGEFILE

På 32-bitarssystem som stöder Large Files System, tillåta filer vars storlekar inte kan representeras i 31 bitar som ska öppnas.

Några av dessa valfria flaggor kan ändras medfcntl efter att filen har öppnats.

Argumentet läge specificerar behörigheterna att använda om en ny fil skapas. Det ändras av processensumask på vanligt sätt: behörigheterna för den skapade filen är(mode & umask). Observera att det här läget endast gäller för framtida åtkomst av den nyskapade filen. deöppnasamtal som skapar en skrivskyddad fil kan väl returnera en läs / skriv filbeskrivare.

Följande symboliska konstanter tillhandahålls läge :

S_IRWXU

00700 användare (filägare) har läst, skriv och kör tillstånd

S_IRUSR (S_IREAD)

00400 användare har läst tillstånd

S_IWUSR (S_IWRITE)

00200 användare har skrivtillstånd

S_IXUSR (S_IEXEC)

00100 användare har exekutivt tillstånd

S_IRWXG

00070 gruppen har läst, skriv och kör tillstånd

S_IRGRP

00040 gruppen har läst tillstånd

S_IWGRP

00020 gruppen har skrivtillstånd

S_IXGRP

00010 gruppen har exekutivt tillstånd

S_IRWXO

00007 Andra har läst, skriv och kör tillstånd

S_IROTH

00004 andra har läst tillstånd

S_IWOTH

00002 andra har skrivtillstånd

S_IXOTH

00001 andra har exekutivt tillstånd

läge måste anges närO_CREAT är i flaggor , och ignoreras annars.

creat är ekvivalent medöppna med flaggor lika medO_CREAT | O_WRONLY | O_TRUNC.

RETURVÄRDE

öppna ochcreat returnera den nya filbeskrivaren, eller -1 om ett fel inträffade (i vilket fall, Felkod är inställd på lämpligt sätt). Anteckna detöppna kan öppna speciella specialfiler, mencreat kan inte skapa dem - användmknod(2) istället.

På NFS-filsystem med UID-mapping aktiverad,öppna kan returnera en fildeskriptor men t.ex. läsa(2) Förfrågningar nekas medEACCES. Detta beror på att klienten utföröppna genom att kontrollera behörigheterna, men UID-kartläggning utförs av servern vid läsnings- och skrivförfrågningar.

Om filen är nyskapad, är dess atime, ctime, mtime-fält inställda till den aktuella tiden, och det är även ctime och mtime-fälten i moderkatalogen. Annars, om filen är modifierad på grund av O_TRUNC-flaggan, är dess ctime och mtime-fält inställda på den aktuella tiden.

fel

EEXIST

sökvägsnamn existerar redan ochO_CREAT ochO_EXCL var använda.

EISDIR

sökvägsnamn refererar till en katalog och den begärda åtkomsten involverade skrivning (det vill säga,O_WRONLY ellerO_RDWR är inställd).

EACCES

Den begärda åtkomsten till filen är inte tillåten, eller en av katalogerna i sökvägsnamn Tillåt inte att söka (exekvera) tillstånd, eller filen fanns inte än och skrivåtkomst till överordnad katalog är inte tillåten.

ENAMETOOLONG

sökvägsnamn var för lång.

ENOENT

O_CREAT är inte inställd och den angivna filen existerar inte. Eller, en katalogkomponent i sökvägsnamn existerar inte eller är en dangling symbolisk länk.

ENOTDIR

En komponent som används som en katalog i sökvägsnamn är inte en katalog, ellerO_DIRECTORYspecificerades och sökvägsnamn var inte en katalog.

ENXIO

O_NONBLOCK | O_WRONLY är inställd, den angivna filen är en FIFO och ingen process har filen öppen för läsning. Eller filen är en speciell specialfil och ingen motsvarande enhet finns.

ENODEV

sökvägsnamn hänvisar till en speciell speciell fil och ingen motsvarande enhet existerar. (Det här är en Linux-kärnbull - i denna situation måste ENXIO returneras.)

EROFS

sökvägsnamn refererar till en fil på ett skrivskyddat filsystem och skrivåtkomst begärdes.

ETXTBSY

sökvägsnamn refererar till en körbar bild som för närvarande körs och skrivåtkomst begärdes.

EFAULT

sökvägsnamn pekar utanför ditt tillgängliga adressutrymme.

ELOOP

För många symboliska länkar uppstod i lösningen sökvägsnamn , ellerO_NOFOLLOW specificerades men sökvägsnamn var en symbolisk länk.

ENOSPC

sökvägsnamn skulle skapas men enheten innehåller sökvägsnamn har inget utrymme för den nya filen.

ENOMEM

Otillräckligt kärnminne var tillgängligt.

EMFILE

Processen har redan det maximala antalet filer öppna.

ENFILE

Gränsen för det totala antalet filer som är öppna på systemet har uppnåtts.

Rätta sig efter

SVr4, SVID, POSIX, X / OPEN, BSD 4.3O_NOFOLLOW ochO_DIRECTORY flaggor är linuxspecifika. Man kan behöva definiera_GNU_SOURCE makro för att få sina definitioner.

begränsningar

Det finns många infeliciteter i protokollet som ligger till grund för NFS, vilket påverkar bland andraO_SYNC ochVID FÖRDRÖJNING.

POSIX innehåller tre olika varianter av synkroniserad I / O, som motsvarar flaggornaO_SYNC , O_DSYNC och O_RSYNC. För närvarande (2.1.130) är dessa alla synonymt med Linux.