pread c -funksjon

pread c -funksjon
På C -programmeringsspråk, formålet med pread () Funksjon er å lese det spesifiserte antallet byte (n) av inndata som er indikert med filbeskrivelsen, til det definerte bufferområdet til minnet. De pread () funksjon gjør det samme som lese() Metode, men den begynner å lese fra et bestemt sted i filen i stedet for å oppdatere hele filen med filpekeren. Filpekerposisjonen påvirkes ikke. Imidlertid brukes forskyvningsverdien for å spesifisere filens startsted. Vi må undersøke hvordan denne funksjonen fungerer for å se dette.

Før vi går videre, må vi forstå syntaks for pread -funksjonen og overskriftsfilene som kreves for denne illustrasjonen. De Unistd Headerfil brukes til å fungere med PREAD -funksjonen. Så her er koden du skal legge inn C -programmeringsspråkfilen:

#inkludere

De pread () Funksjonen inneholder de samme innledende tre parametrene som lese() funksjon, og den fjerde parameteren er forskjøvet for den spesifiserte posisjonen inne i filen. Ethvert forsøk på å kjøre pread () Funksjon på en fil som ikke kan fullføre en søkehandling vil resultere i en feil. Her er syntaks for pread -funksjonen:

ssize_t pread (int file_descriptor, void *buffer, size_t no_of_n_bytes, off_t offset);

Denne funksjonen returnerer et ikke-negativt heltall, noe. Hvis den returnerer en negativ verdi, klarer den ikke å lese det spesifiserte antallet byte. Det satte errno til Ebadf (som betyr at filbeskrivelsen ikke er en gyldig fil- eller socketbeskrivelse), Econnreset (En jevnaldrende tvang oppsigelse av en forbindelse), Efault, Enobufs (utilstrekkelige systemressurser for å fullføre samtalen) osv.

For å få detaljene om errno, Vennligst gjør litt på nettet. Lesfunksjonen krever ikke autorisasjon til å lese en fil fra filsystemet eller nettverket.

Eksempel 1

Eksemplet nedenfor åpner en fil og leser data fra den. For å begynne denne opplæringen, start en terminal i Linux, UNIX eller noe annet operativsystem du ønsker. Deretter, som vist nedenfor, flytt fra den gjeldende katalogen til en annen passende arbeidskatalog, eller en "fungerer" -mappe i vårt tilfelle. Bruk “LS” -kommandoen til å vise nesten alle filer og kataloger i arbeidskatalogen. I VIM -redaktøren åpner eller oppretter en ny fil med tittelen “Pread.C ”, en C -programmeringsspråkfil.

Vi bruker VIM -redaktøren for å åpne og lage den. Du kan imidlertid bruke hvilken redaktør du liker, for eksempel nano, tekst osv. Du kan se at vi har en ny.tekst fil i denne listen over kataloger. Denne filen vil bli brukt i vår C -kode nå. Se på følgende terminalskjerm for å visualisere utgangen:

Overskriftsfilene er inkludert i de tre første linjene. Etter det starter hovedmetoden med at den første linjen erklærer to heltallvariabler, i.e., Num og Filedescriptor. Etter det satte vi forskyvningen til 5. Vi definerer en "buffer" -buffer "og setter verdien til" testtekst "i den tredje linjen i hovedfunksjonen. Vi gir brukeren skrivebeskyttet tilgang til ny.tekst fil i det betingede uttrykket ved hjelp av en åpen() funksjon.

Den åpne funksjonen er her for å returnere en deskriptorverdi som er registrert i den arkiverte variabelen. Hvis beskrivelsen får verdien mindre enn 0, er det Perror () Funksjon vil bli utført for å kaste en feil. I andre setning bruker vi PREAD -funksjonen for å overføre verdiene til variablene og størrelsen på funksjonen for å redusere bufferstørrelsen hvis beskrivelsen får verdien større enn 0. Utskriftserklæringen viste utgangen.

Følgende er innholdet i det nye.txt -fil. Bufferteksten er på den tredje linjen, som er forskyvningspunktet. Se på følgende terminalskjerm for å visualisere utgangen:

Bruk nå C -kompilatoren til å kompilere pread.c fil. Vi bruker GCC -kompilatoren for sammenstilling og utførelse av C -kode. I terminalen skriver du "GCC" og legger inn navnet på den nødvendige C -filen, etterfulgt av -o Bytt og navnet på utgangsfilen som er sett i følgende skjermbilde. Kompilatoren vil vise eventuelle feil under samlingen i terminalvinduet. Den nødvendige utdatafilen opprettes hvis samlingen er vellykket og kan bli funnet i arbeidskatalogen.

Utgangen kan svinge avhengig av forskyvningsverdien. Tilsvarende, hvis verdien av bufferen endres, vil utgangen på terminalskjermen utvilsomt endres. Skriv inn følgende kommando i kommandoen for å kjøre utdatafilen. Se på følgende terminalskjerm for å visualisere utgangen:

Nå, ved hjelp av VIM -redaktøren, ønsker vi å oppdatere pread fil og trenger å angi verdien for forskyvning til 8, og for bufferoppdatering, strengen til "dyr" i stedet for "testtekst" som koden som er vist i følgende bilde:

Fordi vi gjorde endringer i programkodefilen vår, må vi nå kompilere koden vår. Samlingsprosessen er den samme som utført i de foregående trinnene. Her er bildet av den nye kompilasjonsskjermen:

Nå må vi skrive ut utdataene på skjermen ved hjelp av produksjon eller Objektfil Vi oppnådd etter å ha fullført kompileringsprosedyren. Se utgangen på terminalskjermen ved å skrive følgende kommando. Utgangen til dette er "dyr". Se på følgende vedlagte terminalskjerm for å visualisere utgangen:

Konklusjon

Denne artikkelen viste bruken av PREAD -funksjonen til C for å lese dataene fra noen tekstfiler i vårt Linux -system i byte. Vi har diskutert hvordan en pread () Funksjonen er forskjellig fra det enkle lese() funksjon på grunn av å bruke et spesifikt punkt for å lese dataene fra en fil.