LSTAT -funksjonen i C

LSTAT -funksjonen i C
“LSTAT () -funksjonen er i utgangspunktet en slags systemanrop som er relatert til operativsystemet vårt. For å vite detaljene om LSTAT () -funksjonen, må vi først vite hva som er systemanrop.

Systemanrop gir et miljø til servicemodus som er tilgjengelig i operativsystemet. Programmet vårt kan utføre i to modus. En av dem er brukermodus, og en annen er kjernemodus. Hvis et program blir utført i kjernemodus, har programmet rett til å få tilgang til minne, maskinvare og andre ressurser direkte.

Systemanropene er komponentene i operativsystemet som har rett til å bruke alle systemfilene.”

Hva er LSTAT () -funksjonen?

LSTAT () -funksjonen vil kontrollere all systemstatus og returnerer informasjonen om en spesiell lenke kalt en symbolsk lenke. Stat () & fStat () -funksjon gir informasjonen om den aktuelle filen, men LStat () -funksjonen refererer til en lenke som peker den aktuelle filen.

Syntaks

Syntaksen til LStat () -funksjonen er -
int lstat (const char *path, struct stat *buf);

Her inne i LStat () -funksjonen vil vi passere to parametere som et argument.

Den første parameteren for funksjonen er en bane som gir informasjon om dens identifikasjon og den sannsynlige eller faktiske kilden til filen.

En annen parameter er buff som gir informasjon om adressen til statsstrukturen. Denne statsstrukturen har all den oppdaterte informasjonen om den aktuelle filen, som er pekt av *BUF -pekeren.

Strukturen til LSTAT () -funksjonen

Systemet kalt LSTAT () -funksjonen returnerer en struktur som heter Stat Structure. Datamedlemmene i den statsstrukturen er:

  1. ST_MODE: Filtillatelser og informasjon om filtype.
  2. ST_INO: Informasjon om inoden.
  3. st_dev: enhetsnavnet.
  4. ST_UID: Få identifisering av kildefilen.
  5. ST_GID: Få gruppen av identifisering av kildefilen
  6. st_size: størrelsen på filen.
  7. ST_ATIME: Nevn siste gang på den brukte filen.
  8. st_ctime: Nevn tidspunktet for å endre metadataene til filen. Eksempel: Filnavnendring.
  9. ST_MTIME: Nevn tiden for å endre innholdet i filen.
  10. st_nlink: Nevn nummeret på katalogoppføringen.
  11. st_blocks: Teller antall brukte blokker (512 byte).

Makroer

LStat () -funksjonen har Stast Struction, som inneholder flere typer makroer. Disse makroene hjelper LStat () med å gjenkjenne typen filer. Navnet på disse makroene er:

  1. S_isblk (): Test for en spesialfil for en blokkering.
  2. S_ischr (): Undersøk om filen er en karakterenhetsfil.
  3. S_isdir (): Filtype er en katalog.
  4. S_isfifo (): Inspeksjon relatert til rør i systemet.
  5. S_isreg (): Undersøk den ofte brukte filen.
  6. S_islink (): Undersøk den myke lenken.
  7. S_issock (): Undersøk om filen er en stikkontakt.

Nå vil vi se et programmeringseksempel for å demonstrere LSTAT () System Call -funksjonen.

Programmering eksempel-1

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
int main ()

char fl [] = "t.c ", sln [] =" t.lenke ";
struct Stat Inf;
int fd;
if ((fd = create (fl, s_iwusr))<0)
perror ("creat () feil");
ellers

Lukk (FD);
if (link (fl, SLN)!= 0)
Perror ("Link () feil");
ellers

if (lstat (SLN, & inf)!= 0)
Perror ("LStat () feil");
ellers

setter ("Vi kommer under informasjonen fra lStat () for en fil:");
printf ("Filkoblinger:%d \ n", (int) inf.st_nlink);
printf ("Fil uid:%d \ n", (int) inf.st_uid);
printf ("file inode:%d \ n", (int) inf.st_ino);
printf ("File gid:%d \ n", (int) inf.st_gid);
printf ("File Dev ID:%d \ n", (int) inf.st_dev);
printf ("Filmodus:%08x \ n", inf.st_mode);

unlink (SLN);

unlink (fl);

retur 0;

Produksjon

Forklaring

Her vil vi se noen output ved hjelp av LSTAT () -funksjonen om statusen til en bestemt fil som er opprettet av programmereren. I dette programmet har vi opprettet en vanlig fil og også opprettet sin symbolske lenke. Den vil vise informasjonen om i-node, dev id, modus, ingen av lenker, uid og gid. lStat () -funksjonen gir all detaljert informasjon om en opprettet fil og den tilsvarende myke lenken.

Programmering Eksempel-2

La oss se en annen detaljert implementering av LSTAT () -funksjonen.

#inkludere
#inkludere
#inkludere
#inkludere
#inkludere
int main (int argc, char *argv [])

struct Stat a;
hvis (argc != 2)
fprintf (stderr, "Vennligst skriv inn filnavn som første argument: %s \ n", argv [0]);
exit (exit_failure);

if (lStat (argv [1], & a) == -1)
Perror ("Noe feil for LSTAT");
exit (exit_failure);

printf ("Så inndatafiltypen er =>");
hvis en.ST_MODE & S_IFMT) == S_IFDIR)
printf ("katalog \ n");
ellers hvis ((a.st_mode & s_ifmt) == s_ififo)
printf ("fifo/pipe \ n");
ellers hvis ((a.ST_MODE & S_IFMT) == S_IFCHR)
printf ("karakterenhet \ n");
ellers hvis ((a.st_mode & s_ifmt) == s_ifblk)
printf ("Block Device \ n");
ellers hvis ((a.ST_MODE & S_IFMT) == S_IFREG)
printf ("vanlig \ n");
ellers hvis ((a.ST_MODE & S_IFMT) == S_IFSOCK)
printf ("socket \ n");
ellers hvis ((a.st_mode & s_ifmt) == s_iflnk)
printf ("Symbolic link \ n");
ellers
printf ("ukjent \ n");
printf ("Nei. av koblingsliste:%ld \ n ", (lang) a.st_nlink);
printf ("Eierskap: uid =%ld gid =%ld \ n",
(lang) a.st_uid, (lang) a.st_gid);
printf ("inode no %ld \ n", (lang) a.st_ino);
printf ("Mode: %lo (oktal) \ n",
(usignert lang) a.st_mode);
printf ("siste endringstid er:%s", ctime (& a.st_ctime));
printf ("Siste tilgangstid er: %s", ctime (& a.st_atime));
printf ("sist endret innholdet i filtiden er: %s", ctime (& a.st_mtime));
printf ("Foretrukket lengde på blokkene med å gi I/O: %ld byte \ n",
(lang) a.st_blksize);
printf ("Lengden på filen er: %lld byte \ n",
(lang lang) a.st_size);
printf ("teller nei. av brukte blokker %lld \ n ",
(lang lang) a.st_blocks);
exit (exit_success);

Produksjon

Forklaring

Her vil vi vise alle utsikter til LSTAT () systemanropsfunksjon.

Ved den første utdata vil vi oppgi et filnavn uten dens veiinformasjon. Som en utdata vil vi få bruken av programmet. Programmet trenger et inndatafilnavn/sti som første argument.

I neste utgang vil vi vise informasjonen om blokkenhetsfilen. Her registrerer 5+0 inn og 5+0, og inndatafiltypen er en blokkeringsenhet.

I neste utgang vil vi opprette en fil som heter “papan_char_device_file”Hvilken type er en karakterenhet. lStat () -funksjonen vil hjelpe den til å gi all informasjonen relatert til denne karakterenheten.

Etter det vil vi lage en katalog som heter “Habibpur”Hvilken filtype er en katalog. lStat () vil opprette all informasjon om denne filen.

Deretter oppretter vi en annen fil som heter “papan_fifo_file”Hvis filtype er FIFO/PIPE. Vi vil få LSTAT -funksjonen gitt informasjon for filen som utdata.

Etter det vil vi lage en symbolsk lenke som heter “puja.tekst”Av en fil som heter“Avishek.tekst”Og få LSTAT -funksjonen gitt informasjon for filen som utdata.

Deretter vil vi sjekke filtypen "Avishek.tekst,”Som er en vanlig fil [allerede opprettet i forrige trinn].

Og sist, vil vi lage en annen fil som heter ” nadia_socket_file.sokk”, Hvilken filtype som er en stikkontakt, og få all detaljert informasjon om denne filen.

Ved hjelp av LStat () -funksjonen vil vi gjenkjenne alle filene.

Konklusjon

Her vil vi ha nevnt alle aspekter av LSTAT () funksjonssystemanropet. Når vi ser alle egenskapene og implementeringstypen for LSTAT () -funksjonen, kan vi tydelig forstå at det er en veldig viktig systemanropsfunksjon for å få alle attributtene til en bestemt fil som vi har laget i systemet vårt, og systemet vil svare i henhold til til instruksjon av LSTAT () funksjonskommando.