C Programmering

Hur man använder Lseek System Call i C

Hur man använder Lseek System Call i C

Lseek System-samtalet har använts för att läsa vissa specifika tecken eller data från en fil eller för att skriva något innehåll på den specifika platsen för en fil. Det betyder att du kan läsa eller skriva mellan innehållet i en fil.

Syntax:

Off_t lseek (int fd, off_t offset, int varifrån);

Detta "lseek" systemanrop kräver två rubrikfiler, t.ex.g., “Sys / types.h "och" unistd.h ”. Lseek-systemanropet kräver tre parametrar. Den första är "fd", som är en filbeskrivare. Den andra är "offset", används för att placera pekaren. Och den tredje parametern "varifrån" används för att ange positionen för en filpekare, t.ex.g., början, slutet, mitten.

Installera Manpages:

För att kontrollera den extra informationen om systemanrop måste du installera manpages-dev-paketet. Så försök att starta Linux-skalterminalen med hjälp av snabbtangenten Ctrl + Alt + T eller sök den från aktivitetsområdet. När du har startat kommandoterminalen, kör nedanstående apt install-fråga för att installera manpages-dev-biblioteket. Det kräver ditt nuvarande kontolösenord för att fortsätta med installationen. Ange lösenordet och tryck på Enter-tangenten från skrivmaskinen. Installationsprocessen kommer att starta och börja samla information.

$ sudo apt install manpages-dev

Installationsprocessen får dig att vänta lite tid. När installationen har slutförts kan du nu kontrollera informationen om kommandot “lseek”.  Så skriv nedanstående "man 2" -kommando tillsammans med namnet på systemanropet. Som du kan se har vi letat efter ”lseek” i instruktionen nedan.

$ man 2 leksaker

Man-sidan för systemanropet “lseek” har öppnats nedan. Du kan få all information om det.

Installera GCC Compiler:

Nu är det dags för oss att installera GCC-kompilatorn för kompilering av C-språkfiler. Så du måste använda ett mycket enkelt apt install-kommando i skalet för att installera det medan du använder kompileringstillägget som nyckelordsnamn nedan.

$ sudo apt installera gcc

Det tar lite tid att få installationen klar. Efter installationen av gcc-paketet är ditt Linux-system redo att använda c-språkfiler i det.

Exempel 01:

Innan du går djupt för att förstå begreppet lseek-systemanrop måste du starta det med en enkel filtyp. Så starta terminalen och prova kommandot nedan för att skapa en enkel fil med namnet “sök” i hemkatalogen för din Linux-distribution.

$ touch-sökning

Lägg till lite data i filen "sök" och spara den. Du kan se filen "söka" innehåll i kommandoradsskalet genom att använda den enkla "katt" -frågan nedan. Innehållet i en fil har några alfabet och siffror tillsammans med tecknet "*".

$ katt söker

Låt oss skapa ett C-typ filtest.c ”med hjälp av nano-nyckelordet för att öppna det direkt med Nano-redigeraren. Försök att utföra kommandot nedan för att göra det.

$ nano-test.c

Låt oss kolla ett program utan lseek-kommandot. Det öppnar en nano-textredigerare med en C-typfil som nämns på ovansidan. Skriv nu koden nedan från bilden i C-redigeraren. De första 4 raderna innehåller rubrikfilerna som är nödvändiga för att implementera kommandot “lseek”. Därefter har huvudfunktionen startats. I den här huvudmetoden har vi definierat hel- och teckentypsdata för vidare användning. Den tredje raden i huvudfunktionen har använt det öppna samtalet för att öppna en fil med namnet "sök", som vi just har skapat ovan, och förskjutningen "O_RDWR" har använts för läs- och skrivbehörigheter. Innehållet från filen har återlämnats till filbeskrivaren “f”. Efter detta har vi använt det första läsmetodsanropet för att läsa 12 tecken data från sökfilen. Skrivfunktionen har använts för att skriva data till skärmen. Ett annat läskommandot har använts för att hämta de kommande 12 tecknen från filbeskrivaren “f”, och skrivkommandot läser de nästa 12 tecknen till utskärmen. Från detta kan vi anta att utdata kommer att visa totalt 24 tecken från filen "sök". Tryck på Ctrl + S för att spara den här filen och försök Ctrl + X för att stänga den.

Låt oss bara sammanställa “testet.c ”-fil med hjälp av GCC-kompilatorkommandot nedan.

$ gcc-test.c

Kör nu koden för “testet.c ”-fil för att kontrollera utmatningen av C-koden enligt nedan. Utdata har visat 24 teckenuppsättning av innehåll från filsökningen enligt nedan.

$ ./ a.ut

Låt oss använda kommandot “lseek” i koden för att kontrollera utdata från ett systemanrop. Så öppna samma test.c-fil med hjälp av nano-kommandot nedan.

$ nano-test.c

Uppdatera din kod som den är. Den här gången har vi använt 6 tecken från innehållsfilen för att läsa och skriva. Lseek-kommandot har använts för att hoppa över de följande 5 tecknen från innehållsfilen och hoppa till nästa tecken med hjälp av offset ”SEEK_CUR”.

Låt oss sammanställa den här koden igen.

$ gcc-test.c

Utgången från C-koden med hjälp av a.kommandot ut visar de första 6 tecknen, sedan hoppar det över de 5 följande tecknen och visar sedan de följande 6 tecknen.

$ ./ a.ut

Exempel 02:

För att ändra, låt oss ändra koden. Öppna filen först.

$ nano-test.c

Nu kommer vi att använda "SEEK_SET" -förskjutningen för att berätta "lseek" -systemets samtal för att visa nästa 6 tecken från en strängs 10: e position.

Kompilera C-filen.

$ gcc-test.c

Utgångskommandot a.out har visat de 6 tecknen från det 10: e indexet för en sträng.

Slutsats:

Den här guiden har gjort några enkla exempel på att använda kommandot "lseek" systemanrop för att kontrollera eller visa innehåll eller data från vilken position som helst.

Installera senaste Dolphin Emulator för Gamecube & Wii på Linux
Dolphin Emulator låter dig spela dina valda Gamecube & Wii-spel på Linux Personal Computers (PC). Eftersom Dolphin Emulator är en fritt tillgänglig o...
Hur man använder GameConqueror Cheat Engine i Linux
Artikeln täcker en guide om hur du använder GameConqueror-fuskmotorn i Linux. Många användare som spelar spel på Windows använder ofta applikationen "...
Bästa spelkonsolemulatorer för Linux
Den här artikeln listar populära spelkonsolemuleringsprogram som finns tillgängliga för Linux. Emulation är ett mjukvarukompatibilitetsskikt som emule...