funzione lstat in c

funzione lstat in c
“La funzione lstat () è fondamentalmente un tipo di chiamata di sistema correlato al nostro sistema operativo. Per conoscere i dettagli sulla funzione LSTAT (), in primo luogo, dobbiamo sapere cosa è il sistema chiama.

Le chiamate di sistema forniscono un ambiente alla modalità di servizio disponibile nel sistema operativo. Il nostro programma può eseguire in due modalità. Uno di questi è la modalità utente e un altro è la modalità kernel. Se un programma viene eseguito in modalità kernel, il programma ha il diritto di accedere direttamente alla memoria, all'hardware e ad altre risorse.

Le chiamate di sistema sono i componenti del sistema operativo che hanno il diritto di utilizzare tutti i file di sistema."

Qual è la funzione lstat ()?

La funzione LSTAT () controllerà tutto lo stato del sistema e restituirà le informazioni su un collegamento speciale chiamato collegamento simbolico. La funzione stat () e fstat () fornisce le informazioni sul file particolare, ma la funzione LSTAT () si riferisce a un collegamento che punta il particolare file.

Sintassi

La sintassi della funzione lStat () è -
int lStat (const char *percorso, struct stat *buf);

Qui all'interno della funzione LSTAT (), passeremo due parametri come argomento.

Il primo parametro della funzione è un percorso che fornisce informazioni sulla sua identificazione e sulla fonte probabile o effettiva del file.

Un altro parametro è buff che fornisce informazioni sull'indirizzo alla struttura stat. Questa struttura stat contiene tutte le informazioni aggiornate sul file particolare, che è indicato dal puntatore *buf.

La struttura della funzione lstat ()

Il sistema chiamato funzione lStat () restituisce una struttura chiamata struttura stat. I membri dei dati di quella struttura stat sono:

  1. ST_MODE: le autorizzazioni del file e il tipo di file.
  2. ST_INO: Informazioni sull'inade.
  3. ST_DEV: il nome del dispositivo.
  4. ST_UID: ottenere l'identificazione del file di origine.
  5. ST_GID: ottenere il gruppo di identificazione del file di origine
  6. St_size: la dimensione del file.
  7. St_Atime: menzionare l'ultima volta del file usato.
  8. St_ctime: menzionare il tempo di modifica dei metadati del file. Esempio: modifica del nome del file.
  9. ST_MTime: menzionare il tempo per modificare il contenuto del file.
  10. ST_NLINK: menzionando il numero della voce della directory.
  11. ST_BLOCKS: contando il numero di blocchi usati (512 byte).

Macro

La funzione LSTAT () ha una struttura stat. Queste macro aiutano la funzione LSTAT () a riconoscere il tipo di file. Il nome di queste macro è:

  1. S_ISBLK (): test per un file speciale a blocchi.
  2. S_ischr (): esaminare se il file è un file del dispositivo di caratteri.
  3. S_isdir (): il tipo di file è una directory.
  4. S_isfiFo (): ispezione relativa al tubo nel sistema.
  5. S_isreg (): esaminare il file comunemente usato.
  6. S_islink (): esaminare il collegamento soft.
  7. S_issock (): esaminare se il file è un socket.

Ora vedremo un esempio di programmazione per dimostrare la funzione di chiamata di sistema LSTAT ().

Esempio di programmazione-1

#includere
#includere
#includere
#includere
#includere
#includere
int main ()

char fl [] = "t.c ", sln [] =" t.collegamento" ;
struct stat inf;
int fd;
if ((fd = create (fl, s_iwusr))<0)
error ("create () errore");
altro

chiudere (FD);
if (link (fl, sln)!= 0)
Errore perror ("link ()");
altro

if (LSTAT (SLN e INF)!= 0)
error ("lstat () errore");
altro

put ("Stiamo percorrendo le informazioni da lStat () per un file:");
printf ("collegamenti file:%d \ n", (int) inf.st_nlink);
printf ("file 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 ("modalità file:%08x \ n", INF.st_mode);

UNLINK (SLN);

UNLINK (FL);

restituzione 0;

Produzione

Spiegazione

Qui vedremo alcuni output usando la funzione LSTAT () sullo stato di un particolare file creato dal programmatore. In questo programma, abbiamo creato un file normale e creato anche il suo collegamento simbolico. Mostrerà le informazioni su I-Node, Dev ID, Modalità, NO di collegamenti, UID e GID. La funzione lstat () fornisce tutte le informazioni dettagliate di un file creato e il collegamento soft corrispondente.

Programmazione Esempio-2

Vediamo un'altra implementazione dettagliata della funzione LSTAT ().

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

struct stat a;
if (argc != 2)
fprintf (stderr, "Immettere il nome del file come 1 ° argomento: %s \ n", argv [0]);
exit (exit_failure);

if (lStat (argv [1], & a) == -1)
Perror ("qualche errore per LSTAT");
exit (exit_failure);

printf ("Quindi il tipo di file di input è =>");
se un.ST_MODE & S_IFMT) == S_IFDIR)
printf ("directory \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFIFO)
printf ("FIFO/pipe \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFCHR)
printf ("caratteri dispositivo \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFBLK)
printf ("Blocco dispositivo \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFREG)
printf ("normale \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFSock)
printf ("socket \ n");
altro se ((a.ST_MODE & S_IFMT) == S_IFLNK)
printf ("link simbolico \ n");
altro
printf ("sconosciuto \ n");
printf ("no. dell'elenco dei collegamenti:%ld \ n ", (lungo) a.st_nlink);
printf ("proprietà: uid =%ld gid =%ld \ n",
(lungo) a.st_uid, (lungo) a.st_gid);
printf ("inode no %ld \ n", (long) a.st_ino);
printf ("modalità: %lo (ottale) \ n",
(non firmato lungo) a.st_mode);
printf ("L'ultimo tempo di modifica è:%s", ctime (& a.st_ctime));
printf ("L'ultimo tempo di accesso è: %s", ctime (& a.st_atime));
printf ("L'ultima modifica del contenuto del tempo del file è: %s", ctime (& a.st_mtime));
printf ("lunghezza preferita dei blocchi di donazioni I/O: %ld byte \ n",
(lungo) a.st_blksize);
printf ("La lunghezza del file è: %lld byte \ n",
(lungo lungo) a.st_size);
printf ("contando il no. di blocchi usati %lld \ n ",
(lungo lungo) a.st_blocks);
usit (exit_success);

Produzione

Spiegazione

Qui mostreremo ogni prospettiva della funzione di chiamata di sistema LSTAT ().

Al primo output, inseriremo un nome di file senza le informazioni sul percorso. Come output, otterremo l'utilizzo del programma. Il programma necessita di un nome/percorso del file di input come primo argomento.

Nel prossimo output, mostreremo le informazioni sul file del dispositivo di blocco. Qui 5+0 record in e 5+0 record e il tipo di file di input è un dispositivo a blocchi.

Nel prossimo output, creeremo un file chiamato "papan_char_device_file"Quale tipo è un dispositivo di caratteri. La funzione LSTAT () lo aiuterà a fornire tutte le informazioni relative a questo dispositivo di personaggio.

Dopodiché, faremo una directory chiamata "Habibpur"Quale tipo di file è una directory. lStat () creerà tutte le informazioni su questo file.

Successivamente, creeremo un altro file chiamato "papan_fifo_file"Il cui tipo di file è FIFO/pipe. Otterremo la funzione LSTAT fornita informazioni per il file come output.

Dopodiché, faremo un collegamento simbolico chiamato "puja.TXT"Di un file chiamato"Avishek.TXT"E ottenere la funzione LSTAT fornita informazioni per il file come output.

Successivamente, controlleremo il tipo di file di "Avishek.TXT,"Che è un file normale [già creato nel passaggio precedente].

E ultimo, creeremo un altro file denominato " nadia_socket_file.calzino", Quale tipo di file è un socket e ottieni tutte le informazioni dettagliate su questo file.

Con l'aiuto della funzione LSTAT (), riconosceremo tutti i file.

Conclusione

Qui avremo menzionato ogni aspetto della chiamata del sistema di funzione LSTAT (). Vedendo tutte le caratteristiche e il tipo di implementazione della funzione LSTAT (), possiamo chiaramente capire che si tratta di una funzione di chiamata di sistema molto importante per ottenere tutti gli attributi di un particolare file che abbiamo creato nel nostro sistema e il sistema risponderà secondo Alle istruzioni del comando di funzione LSTAT ().