Åpen funksjon på C -språk

Åpen funksjon på C -språk

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:

#inkludere
#inkludere

Hvordan å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 1
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
tomrom ()

//Steg 2
intfd;
char buffer [] = "dokumenter/eksempel.tekst";
Char Text [512] = "Kunnskap om de forskjellige åpne, lese og skrivefunksjonene er viktig fordi vi alltid vil trenge dem til å lagre eller avhende informasjon som er lagret i filer.
C -språket har to grunnleggende funksjoner du kan bruke til å åpne filer, åpne () og fopen (), hver med forskjellige anropsmetoder.";
// Trinn 3
FD = åpen (buffer, o_wronly);
// Trinn 4
skriv (fd, & tekst, strlen (tekst));
Lukk (FD);

Fø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);
if (fd ==-1)
printf ("Det oppstod en feil mens du prøvde å åpne filen.");

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:

#inkludere
#inkludere
#inkludere
#inkludere
tomrom ()

intfd;
Char Buffer [1024];
FD = Åpne ("Dokumenter/ingen eksistens.txt ", o_append | o_rdwr);
if (fd ==-1)
bryter (errno)
sak eperm:
printf ("Operasjon ikke tillatt. Feil: %i \ n ", errno);
gå i stykker;
sak Enoent:
printf ("Ingen slik fil/katalog. Feil:%i \ n ", errno);
gå i stykker;
sak enotdir:
printf ("Ikke en katalog. Feil: %i \ n ", errno);
gå i stykker;


Fø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.