Systemanrop levert av Linux -kjernen er utsatt på programmeringsspråket C via GLIBC. Når en systemanrop brukes, kommuniserer du til operativsystemet, og ved retur kommuniserer OS til deg gjennom parametrene som blir returnert til systemanropsfunksjoner (returverdier).
Stat -systemanrop:
Stat System Call er et systemanrop i Linux for å sjekke statusen til en fil som for å sjekke når filen ble åpnet. Stat () systemanrop returnerer faktisk filattributter. Filattributtene til en inode blir i utgangspunktet returnert av STAT () -funksjonen. En inode inneholder metadataene til filen. En inode inneholder: filtypen, størrelsen på filen, når filen ble åpnet (modifisert, slettet) som er tidsstempler, og banen til filen, bruker -ID og gruppe -ID, lenker til filen , og fysisk adresse på filinnhold.
Vi kan si at Inode inneholder alle dataene som kreves for STAT () -systemanropet, og det er indeksnummeret for filen som er lagret i INODE -tabellen. Hver gang du oppretter en fil, opprettes det et inode -nummer for den filen. Bruke STAT -system Ring Systemtabellene kan vises.
Syntaks av C Stat System Call:
For å bruke statssystemanropet på C -programmeringsspråk, må du ta med følgende overskriftsfil:
#inkludereStat brukes til å få status som en fil. Syntaksen til C Stat System Call er kanskje ikke det samme for hvert operativsystem. I Linux er syntaks for statssystemanrop som følger:
int stat (const char *path, struct stat *buf)Returtypen for funksjonen i int, hvis funksjonen blir utført med hell, 0 returneres hvis det er noen feil, vil -1 blir returnert.
Her const char *sti Angir navnet på filen. Hvis filen til filen er en symbolsk lenke, må du spesifisere lenken i stedet for filnavnet.
Så i funksjonen har vi en statsstruktur der dataene eller informasjonen om filen er lagret som bruker en peker som er navngitt buf, som blir sendt inn som et paramteter og fylt ut under utførelsen av samtalen og lesbar av brukeren etter samtalen.
Statstruktur:
Statstrukturen som er definert i overskriftsfilen inneholder følgende felt:
struct StatBeskrivelse:
Flagg | Beskrivelse | Flaggverdi |
---|---|---|
S_ifmt | En bitmask pleide å få modusverdi på en fil | 0170000 |
S_ifsock | En filkonstant av stikkontakt | 0140000 |
S_iflink | En filkonstant av symbolsk lenke | 0120000 |
S_ifreg | Filkonstant for vanlig fil | 0100000 |
S_ifblk | Filkonstant for blokkeringsfil | 0060000 |
S_ifdir | Filkonstant for katalogfil | 0040000 |
S_IFCHR | Filkonstant for karakterfil | 0020000 |
S_ififo | En filkonstant av FIFO | 0010000 |
S_isuid | Sett bruker -ID -bit | 0004000 |
S_isgid | Sett gruppe -ID -bit | 0002000 |
S_ISVTX | Sticky Bit som indikerer delt tekst | 0001000 |
S_IRWXU | Eierstillatelser (les, skriv, utfør) | 00700 |
S_irusr | Les tillatelser for eier | 00400 |
S_iwusr | Skriv tillatelser for eier | 00200 |
S_IXUSR | Utfør tillatelser for eier | 00100 |
S_IRWXG | Gruppetillatelser (les, skriv, utfør) | 00070 |
S_irgrp | Les tillatelser for gruppe | 00040 |
S_IWGRP | Skriv tillatelser for gruppe | 00020 |
S_IXGRP | Utfør tillatelser for gruppe | 00010 |
S_IRWXO | Tillatelser for andre (les, skriv, utfør) | 00007 |
S_iroth | Les tillatelser for andre | 00004 |
S_iwoth | Skriv tillatelser for andre | 00002 |
S_IXOTH | Utfør tillatelser for andre | 00001 |
Hvordan bruke Stat System Call:
Følgende eksempel viser hvordan du bruker statssystemanrop på programmeringsspråk i Linux, Ubuntu.
Eksempel 1:
I følgende kode skal vi finne modus for en fil:
KODE:
#inkludereÅ sammenstille og kjøre programmet kommer tilbake som nedenfor:
I denne koden har vi gitt navnet på filen i Stat System Call og deretter pekeren til statstruktur som er SFILE. Pekeren til STAT -struktur brukes deretter til å få tilgang til ST_Mode som viser modus for filen ved hjelp av Printf -setningen.
Topptekstfilen brukes slik at du kan bruke statssystemanrop. Hodefilen er standardinngangs-/utgangsbibliotekfilen slik at du kan bruke Printf eller Scanf i C -koden din.
Eksempel 2:
I følgende kode skal vi få informasjon om filen ved å bruke Stat System Call:
KODE:
#inkluderePRODUKSJON:
I ovennevnte C -kode har vi skrevet inn navnet på filen, og hvis filen ikke eksisterer, vil utførelsen av programmet bli stoppet. Dette demonstreres i følgende bilde:
Hvis filen vår eksisterer, vil funksjonen SFILE (n) bli kalt der vi har gitt navnet på filen. Inne i funksjonen, først og fremst har vi brukt Stat System Call, hvis stat () returnerer -1, må det være en feil slik at en melding blir skrevet ut og utførelse av programmet vil bli stoppet.
Så i Printf -setningen har vi brukt navnet på funksjon og prikkseparator for å få tilgang til datamedlemmene til Stat struct.
Så for filmodus har vi fått tilgang til makroene eller flaggene til ST_MODE. Her brukes logisk og operatøren til å skrive ut de respektive modusene. Vi har sjekket for tillatelser for bruker, gruppe og andre for den spesifiserte filen (filnavnet angitt av bruker).
Med dette kan du se hvordan du bruker statssystemanropet fra C -programmeringsspråket for å få informasjon fra OS -kjernen om filer. Hvis du har et spørsmål, kan du fortelle oss via kommentarfelt.