Posix åpen funksjon i C

Posix åpen funksjon i C
Selv om det er mange biblioteker i C, er POSIX-biblioteket veldig kjent blant utviklerne på grunn av det brede spekteret av systemanropsfunksjoner, spesielt systemfunksjonen krever "filer". Posix Library for Linux -operativsystemet gir deg en rekke funksjoner. Det er en åpen () -funksjon som med vilje brukes til å åpne en spesifikk fil fra et system i en av disse POSIX -samtalene. Den bruker mange alternativer for å lage, åpne, lese, skrive og gjøre mange ting på Linux -filene.

Eksempel 1:
La oss se på det første eksemplet for å bruke Open () -funksjonen til POSIX for å bare opprette og åpne filene i en skrivebeskyttet modus. For dette, bruk berøringsspørsmålet i skallet ditt for å opprette en C -fil. Det kan lagres i den nåværende arbeidsmappen.

Åpne den nylig genererte filen, jeg.e. åpen.C, i redaktøren for å legge til noe kodebit i det akkurat som i det presenterte bildet. Start koden din med bruk av C -standardoverskrifter som STDIO.H, fcntl.H, og errno.h som med vilje er inkludert for standardinngang/utgang, bruk av arkivering og viser feilene henholdsvis. Det er en hovedfunksjon for å utføre utførelsen. Vi oppretter en heltallvariabel "F" som brukes som en filbeskrivelse for å få den returnerte verdien fra "Open ()" -funksjonen. Open () -funksjonen bruker tekstfilnavnet sammen med to alternativer - alternativet “O_RDONLY” for å lese den allerede eksisterende filen og alternativet “O_Creat” for å opprette en fil hvis den ikke eksisterer.

Utskrift () -uttalelsen viser den returnerte verdien ved å bruke beskrivelsen “F”. Verdien av “F” er lik “-1”. Det kaster en feil som vi ikke klarte å åpne eller opprette en fil sammen med en feilmelding via Perror () -funksjonen. Ellers viser PRINTF () uttalelsen suksessmeldingen på skjermen vår. Koden er fullført ved hjelp av retur 0 -setningen.

#inkludere
#inkludere
#inkludere
int main ()
int f = åpen ("Ny.txt ", o_rdonly | o_creat);
printf ("filbeskrivelsesverdi = %d \ n", f);
if (f == -1)
Perror ("Kunne ikke opprette/åpne en fil ... \ n);
annet
printf ("fil opprettet med hell!\ n ");
retur 0;

Etter at koden er lagret vellykket, kompilerer vi den med kommandolinjen “GCC” -verktøyet som C-kompilatoren som er tilgjengelig i Linux-systemet. Skriv nøkkelordet “GCC” med navnet på en fil “Åpent.C ”og kjør den. Samlingen er velstående, og vi prøver "./en.ut ”spørring for å kjøre den kompilerte koden. Utgangen viser verdien av “F” sammen med en suksessmelding som indikerer at vi endelig opprettet en ny tekstfil med hell. "LS" -instruksjonsutgangen viser den røde uthevede "Ny.txt ”-fil opprettet av Open () -funksjonens“ O_Creat ”-alternativ i den gjeldende arbeidsmappen.

La oss bruke den samme koden for å få en feil hvis Open () -funksjonen finner seg ikke i stand til å lese en fil som ikke eksisterer i systemet. Ved å bruke den samme strukturen i koden, oppdaterer vi Main () -funksjonens første kodelinje. Her fjerner vi alternativet "O_Creat" for å opprette en ny fil ved hjelp av Open () -funksjonen og bare bruke alternativet "O_RDONLY".

Vi endrer også navnet på en fil til "Test.txt ”som ikke eksisterer i arbeidsmappen vår. Dette betyr at den åpne () -funksjonen ikke er i stand til å åpne filen og Perror () -funksjonen viser den respektive feilmeldingen på konsollen. La oss lagre denne oppdaterte C -filen.

#inkludere
#inkludere
#inkludere
int main ()
int f = Åpne ("Test.txt ", o_rdonly);
printf ("filbeskrivelsesverdi = %d \ n", f);
if (f == -1)
Perror ("Feil: [Kunne ikke åpne en fil] :);
annet
Printf ("Fil åpnet med suksess!\ n ");
retur 0;

Kjører filen etter utførelse kaster feilen "ingen slik fil eller katalog".

Eksempel 2:
Du kan bruke Open () -funksjonen for å lese en strengdata fra en bestemt fil ved hjelp av matriser. For det trenger du bare “Unistd.h ”og“ fcntl.H ”biblioteker. Kodeutførelsen starter fra sin primære “Main ()” -metode som erklærer en karaktertype -matrise “A” i størrelse 30. Heltallfilbeskrivelsen bruker den returnerte verdien fra Open () -funksjonssamtalen. Open () -funksjonen som brukes her kaster av seg "O_RDONLY" -alternativet for å åpne den i skrivebeskyttet modus. Les () -funksjonen på den aller neste linjen brukes til å lagre totalt 12 tegn fra “Filen.txt ”ved å bruke beskrivelsen“ F ”og lagre den i karakteroppstillingen“ A ”.

Hvis lese () -funksjonen er vellykket med å lese data fra en fil, returnerer den en viss verdi til variabelen “n”. Funksjonen for skrive () bruker variabelen “N” for å skrive dataene på konsollen som nettopp lagres til matrisen “A”.

#inkludere
#inkludere
int main ()
char a [30];
int f = Åpne ("Fil.txt ", o_rdonly);
int n = les (f, a, 12);
skriv (1, a, n);

Nå må vi opprette samme navn Tekstfil “Fil.txt ”i samme mappe og legg til noen tekstdata i den som presentert ved hjelp av“ Cat ”-instruksjonen til Linux. Vi sammenstiller og utfører våre “åpne.c ”-fil og få de 12 første tegnene fra“ Filen.txt ”vises på skallet.

Eksempel 3:
Du kan bruke Open () -funksjonen for å kopiere tekstdataene fra en fil til en annen med en liten endring i koden. Vi kaster av det samme eksemplet kodebit og gjør noen endringer i noen av linjene. Størrelsen på karakterbufferen “A” oppdateres til 50 og F1 -beskrivelsen åpner filen “Fil.txt "i en" skrivebeskyttet "modus ved hjelp av" o_rdonly "i en åpen () -funksjon. Les () -funksjonen bruker “F1” -beskrivelsen for å lese 25 tegn fra “Filen.txt ”-fil og lagre dem i buffer -matrise“ A ”. Den returnerte suksess/sviktverdien lagres til variabel “n”.

En annen filbeskrivelse “F2” brukes her for å lage en ny fil som heter “Kilde.txt ”i samme mappe ved å bruke alternativet“ 0_creat ”i en" åpen "metode og med en" skrivebeskyttet "-modus (O_Wronly) med 0642-verdien å skrive. Funksjonen for skrive () bruker verdien “N” for å få dataene fra karakterbufferen “A” og analyser den til den andre filen “Kilde.txt ”ved å bruke sin beskrivelse“ F2 ”. La oss nå kjøre følgende kode for å se hva vi får i utdataene:

#inkludere
#inkludere
int main ()
Char A [50];
int f1 = åpen ("fil.txt ", o_rdonly);
int n = lest (f1, a, 25);
int f2 = åpen ("kilde.txt ", o_creat | o_wronly, 0642)
skriv (f2, a, n);

Nå har vi en "fil.txt ”og“ Åpne.c ”-fil i gjeldende mappe. Du kan se dataene i “Filen.tekst". I det åpne.C ”Filutførelse, kilden.TXT -filen genereres og de 25 tegnene fra “Filen.txt ”-filen kopieres til“ Kilden.txt ”-fil også.

Konklusjon

Denne guiden er enkel, men likevel full av C -eksempler for å bruke og lære POSIX “Open ()” -funksjonsanrop. Ved å bruke alle de gitte eksemplene vil du aldri mislykkes mens du bruker filene i C.