Kunnskap om de åpne, lese og skrive funksjoner er viktig fordi vi alltid trenger dem for å lagre eller avhende informasjonen som er lagret i filer. C -språket har to grunnleggende funksjoner som du kan bruke til å åpne filene, ved å bruke Open () og Fopen () -funksjonene, hver med forskjellige anropemetoder.
I denne Linux -hint -artikkelen lærer du hvordan du bruker Open () -funksjonen. Vi vil forklare alt om denne funksjonen, den.
Deretter vil vi bruke det vi lærte ved å implementere bruken av denne funksjonen i praktiske eksempler som vi forberedte for deg med kodebiter og bilder som viser bruken av Open () -funksjonen på C -språket.
For at du skal ha en omfattende kunnskap, legger vi til en spesiell seksjon som beskriver alle feilene som kan oppstå når du bruker denne funksjonen, så vel som påvisning og identifikasjon, slik at i tilfelle de oppstår, har du de nødvendige teknikkene for en rask løsning.
Syntaks av den åpne () -funksjonen på C -språk
int åpen (const char *pathname, int flagg);Beskrivelse av den åpne () -funksjonen på C -språk
Open () -funksjonen åpner en fil for lesing eller skriving. Denne funksjonen åpner filen som er spesifisert i Pathname Input -argumentet. Denne inngangen må spesifisere den absolutte eller relative banen og navnet på filen i strengformat eller en peker til den.
Flaggens inngangsargument spesifiserer attributtene som filen må ha. Følgende er en liste over flaggene som dette inngangsargumentet godtar, og en kort beskrivelse av attributtet som hver enkelt angir:
Flagg | Beskrivelse |
O_rdonly | Åpen fil for lesing bare. |
O_wronly | Bare åpen fil for å skrive. |
O_rdwr | Åpne fil for lesing og skriving. |
O_Creat | Oppretter en fil i banen og navnet som er spesifisert i banenavn argument. |
O_ vedlegg | Åpner filen og plasserer markøren på slutten av innholdet. |
O_async | Aktiver inngangs- og utgangskontroll ved signal. |
O_CLOEXEC | Aktiver lukk-på-exec-modus på den åpne filen. |
O_nonblock | Deaktiverer blokkering av filen som er åpnet. |
O_TMPFILE | Opprett en ikke navngitt midlertidig fil på den spesifiserte banen. |
I tilfeller der mer enn ett flagg brukes, må det utføres en logisk "eller" -operasjon mellom dem. Dette kan gjøres innenfor inngangsargumentet flagg i samme kodelinje som funksjonssamtalen.
Attributtene og modusene kan endres eller konsulteres når filen er åpnet med FCNTL () -funksjonen.
Den åpne () -funksjonen returnerer et heltall som inneholder beskrivelsen til den åpne filen. Denne beskrivelsen brukes som et inngangsargument for filbehandlingsfunksjoner som Read (), Writ (), etc., For å referere til filen.
Denne funksjonen er definert i “Unistd.h ”header. Flaggene som definerer attributtene og modusen for å åpne filen er definert i “FCNTL.h ”. For å bruke Open () -funksjonen, må du ta med disse overskriftene i koden din som følger:
#inkludereHvordan åpne en fil ved hjelp av Open () -funksjonen på C -språket
I dette eksemplet vil vi bruke Open () -funksjonen til å åpne en fil i lese- og skrivemodus. I dette tilfellet er det en tidligere opprettet fil som heter "eksempel.tekst" som er lagret i “Dokumenter”.
Trinn 1: Det første trinnet er å inkludere de nødvendige overskriftene og erklære at det kommer tomme og returnerer i hovedfunksjonen ().
Steg 2: Neste trinn er å erklære variablene som fungerer som inngangs- og utgangsargumenter til den åpne () -funksjonen. Som utgangsargument erklærer vi “FD” heltallet som er filbeskrivelsen. Som inngangsargument erklærer vi at bufferkarakteroppstillingen som inneholder strengen med banen og navnet på filen som skal åpnes.
Vi erklærer også en rekke 512 tegn kalt "tekst" der vi lagrer teksten som vi vil skrive til filen som i dette tilfellet er første ledd i denne artikkelen.
Trinn 3: Når variablene er erklært, kaller vi Open () -funksjonen og passerer "FD" -tallet som utgangsargumentet, strengstien som det første inngangsargumentet og O_Wronly -flagget som det andre argumentet.
Trinn 4: Når åpen () kommer tilbake fra samtalen, returnerer den beskrivelsen til filen som åpnes i "FD". Deretter skriver vi med skrive- () -funksjonen, og passerer "FD" -beskrivelsen som det første inngangsargumentet, strengteksten som det andre inngangsargumentet, og til slutt størrelsen på teksten som er oppnådd med Strlen () -funksjonen. Etter skriveoperasjonen lukker vi filen med lukk () -funksjonen.
Her er den komplette koden for dette eksemplet:
//Trinn 1Følgende figur viser sammenstilling og utførelse av denne koden sammen med filen som vi nettopp skrev. Som vi ser, åpner den åpne () -funksjonen filen riktig. Vi bruker deretter skrivefunksjonen () for å skrive innholdet i teksten. I dette tilfellet inneholder den første ledd i denne artikkelen:
Feil som kan oppstå når du bruker Open () -funksjonen: Hvordan oppdage og identifisere dem
Å bruke Open () -funksjonen kan føre til forskjellige feil. Hvis dette er tilfelle, returnerer det et resultat som er lik -1.
Den enkleste måten å avgjøre om det har oppstått en feil er å bruke en "if" -tilstand der tilstanden er -1 -verdien som returneres i "FD". La oss nå se på hvordan du kan bruke denne metoden for å avgjøre om det har oppstått en feil:
FD = Åpne ("Path/Filename", Flags);Hvis Open () -funksjonen kommer tilbake med en feil, går den til "hvis" -uttalelsen og skriver ut meldingen, “Det oppstod en feil mens du prøvde å åpne filen“.
Når det er åpent () returnerer et resultat som er lik -1, lagrer det automatisk en numerisk kode i errno global variabel som er definert i “Errno.h ”header. Denne numeriske koden kan brukes til å identifisere feilen som oppsto.
Følgende er et utdrag av feilene som Open () -funksjonen kan generere, sammen med en kort beskrivelse av hver feil og den tilhørende heltallverdien:
Definisjon | Verdi i errno | Feil |
Eperm | 1 | Operasjon ikke tillatt |
Enoent | 2 | Ingen slik fil eller katalog |
Eintr | 4 | Avbrutt systemanrop |
Enxio | 6 | Ingen slik enhet eller adresse |
Enomem | 12 | Tomt for minne |
Eacces | 1. 3 | Tillatelse avslått |
Efault | 14 | Dårlig adresse |
Ebusy | 16 | Enhet eller ressurs opptatt |
Eexist | 17 | Filen eksisterer |
ENODEV | 19 | Ingen slik enhet |
Enotdir | 20 | Ikke en katalog |
Eisdir | 21 | Er en katalog |
Einval | 22 | Ugyldig argument |
Efile | 23 | Filtabelloverløp |
Emfile | 24 | For mange åpne filer |
EtxtBsy | 26 | Tekstfil opptatt |
Enospc | 28 | Ikke mer lagringskapasitet igjen på enheten |
Erofs | 30 | Skrivebeskyttet filsystem |
Emalje | 36 | Filnavnet for lenge |
Eloop | 40 | For mange symbolske koblinger oppstår |
Eoverflow | 75 | Verdi for stor for definert datatype |
Edquot | 122 | Kvote overskredet |
Den enkleste måten å identifisere en feil er å åpne en bryter der Errno -variabelen er hopptilstanden, og hvert tilfelle er en feildefinisjon.
Deretter vurderer du et eksempel der vi åpner en fil som ikke eksisterer, noe som resulterer i en feil. For å oppdage en feil, bruker vi "hvis" -tilstanden som vi så i forrige utdrag. For å identifisere den, åpner vi en bryter med de tre vanligste feilene som denne funksjonen kan produsere:
#inkludereFølgende bilde viser sammenstilling og utførelse av denne koden. I den ser vi hvordan den genererte feilen oppdages i "IF" -tilstanden og hvordan feilene blir identifisert i bryteren betinget for å vise meldingen og den spesifikke verdien:
Konklusjon
I denne Linux -hint -artikkelen forklarte vi hvordan du bruker Open () -funksjonen for å åpne filene.
Vi viste deg syntaks for denne funksjonen og den teoretiske beskrivelsen av hvordan den fungerer, samtalemetoden, inngangsargumentene og datatypen som brukes i hvert tilfelle.
Vi implementerte deretter bruken av Open () -funksjonen i et praktisk eksempel ved hjelp av kodebiter og bilder. Vi viste deg hvordan du erklærer de nødvendige variablene, ring denne funksjonen for å åpne en fil og skrive til den.
Vi inkluderte også et avsnitt der vi viser alle feilene som denne funksjonen kan generere. Vi viste deg teknikkene for å oppdage og klassifisere dem slik at du har de nødvendige midlene til å raskt fikse dem når de oppstår.