Función LSTAT en C

Función LSTAT en C
“La función LSTAT () es básicamente un tipo de llamada al sistema que está relacionada con nuestro sistema operativo. Para conocer los detalles sobre la función LSTAT (), primero, tenemos que saber qué son las llamadas del sistema.

Las llamadas del sistema dan un entorno al modo de servicio que está disponible en el sistema operativo. Nuestro programa puede ejecutarse en dos modos. Uno de ellos es el modo de usuario, y otro es el modo kernel. Si un programa se ejecuta en modo kernel, entonces el programa tiene derecho a acceder a la memoria, el hardware y otros recursos directamente.

Las llamadas del sistema son los componentes del sistema operativo que tienen derecho a usar todos los archivos del sistema."

¿Qué es la función lstat ()??

La función LSTAT () controlará todo el estado del sistema y devuelve la información sobre un enlace especial llamado enlace simbólico. La función stat () & fstat () proporciona la información sobre el archivo en particular, pero la función LStat () se refiere a un enlace que apunta el archivo particular.

Sintaxis

La sintaxis de la función lstat () es -
int lstat (const char *ruta, struct stat *buf);

Aquí dentro de la función lstat (), pasaremos dos parámetros como argumento.

El primer parámetro de la función es una ruta que proporciona información sobre su identificación y la fuente probable o real del archivo.

Otro parámetro es Buff, que proporciona información sobre la dirección a la estructura de estadísticas. Esta estructura de estadísticas contiene toda la información actualizada sobre el archivo en particular, que apunta por el puntero *BUF.

La estructura de la función Lstat ()

El sistema llamado función lstat () devuelve una estructura llamada estructura de estadísticas. Los miembros de los datos de esa estructura de estadísticas son:

  1. ST_MODE: la información de permisos de archivo y tipo de archivo.
  2. ST_INO: información sobre el inodo.
  3. ST_DEV: el nombre del dispositivo.
  4. ST_UID: Obtener la identificación del archivo fuente.
  5. ST_GID: Obtener el grupo de identificación del archivo fuente
  6. ST_SIZE: el tamaño del archivo.
  7. st_atime: mencionar la última vez del archivo usado.
  8. ST_CTIME: mencionando el momento de cambiar los metadatos del archivo. Ejemplo: cambio de nombre del archivo.
  9. st_mtime: mencionando el tiempo para cambiar el contenido del archivo.
  10. st_nlink: mencionar el número de la entrada del directorio.
  11. ST_BLOCKS: Contando el número de bloques usados ​​(512 bytes).

Macros

La función LSTAT () tiene una restricción estancada, que contiene varios tipos de macros. Estas macros ayudan a la función LSTAT () para reconocer el tipo de archivos. El nombre de estas macros es:

  1. S_isblk (): prueba un archivo especial de bloque.
  2. S_ischr (): examine si el archivo es un archivo de dispositivo de caracteres.
  3. S_ISDIR (): el tipo de archivo es un directorio.
  4. S_ISFIFO (): Inspección relacionada con la tubería en el sistema.
  5. S_isreg (): examine el archivo comúnmente utilizado.
  6. S_islink (): examine el enlace suave.
  7. S_issock (): examine si el archivo es un socket.

Ahora veremos un ejemplo de programación para demostrar la función de llamada del sistema LSTAT ().

Programación Ejemplo-1

#incluir
#incluir
#incluir
#incluir
#incluir
#incluir
int main ()

char fl [] = "t.c ", sln [] =" t.enlace" ;
stat stat inf;
int fd;
if ((fd = create (fl, s_iwusr))<0)
perror ("create () error");
demás

cerrar (fd);
if (link (fl, sln)!= 0)
perror ("error de enlace ()");
demás

if (lstat (sln e inf)!= 0)
Perror ("LSTAT () Error");
demás

pone ("estamos obteniendo información a continuación de LStat () para un archivo:");
printf ("Enlaces de archivo:%d \ n", (int) INF.st_nlink);
printf ("archivo uid:%d \ n", (int) INF.st_uid);
printf ("File inode:%d \ n", (int) Inf.st_ino);
printf ("Archivo GID:%d \ n", (int) Inf.st_gid);
printf ("File Dev ID:%d \ n", (int) Inf.st_dev);
printf ("Modo de archivo:%08x \ n", INF.st_mode);

Unlink (SLN);

Unlink (fl);

regresar 0;

Producción

Explicación

Aquí veremos alguna salida utilizando la función LStat () sobre el estado de un archivo en particular creado por el programador. En este programa, hemos creado un archivo regular y también hemos creado su enlace simbólico. Mostrará la información sobre el nodo I, el ID del desarrollo, el modo, el no de enlaces, UID y GID. La función LSTAT () proporciona toda la información detallada de un archivo creado y su enlace suave correspondiente.

Programación Ejemplo-2

Veamos otra implementación detallada de la función LSTAT ().

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

estructura estadística a;
if (argc != 2)
fprintf (stderr, "Ingrese el nombre del archivo como primer argumento: %s \ n", argv [0]);
salida (exit_failure);

if (lstat (argv [1], & a) == -1)
perror ("algún error para LSTAT");
salida (exit_failure);

printf ("Entonces, el tipo de archivo de entrada es =>");
if ((a.ST_MODE & S_IFMT) == S_IFDIR)
printf ("Directorio \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFIFO)
printf ("fifo/pipe \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFCHR)
printf ("Dispositivo de caracteres \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFBLK)
printf ("Dispositivo de bloque \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFREG)
printf ("regular \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFSOCK)
printf ("socket \ n");
más si ((a.ST_MODE & S_IFMT) == S_IFLNK)
printf ("enlace simbólico \ n");
demás
printf ("desconocido \ n");
printf ("No. de la lista de enlaces:%ld \ n ", (long) a.st_nlink);
printf ("Propiedad: uid =%ld gid =%ld \ n",
(largo) A.st_uid, (largo) A.st_gid);
printf ("inode no %ld \ n", (largo) a.st_ino);
printf ("Modo: %LO (Octal) \ n",
(sin firmar) un.st_mode);
printf ("El último tiempo de cambio es:%s", ctime (y a.st_cTime));
printf ("El último tiempo de acceso es: %s", ctime (y a.st_atime));
printf ("El último cambio del contenido del tiempo del archivo es: %s", ctime (y a.st_mtime));
printf ("Longitud preferida de los bloques de dar E/S: %ld bytes \ n",
(largo) A.st_blksize);
printf ("La longitud del archivo es: %lld bytes \ n",
(largo) A.st_size);
printf ("contando el no. de bloques usados ​​%lld \ n ",
(largo) A.st_blocks);
salir (exit_success);

Producción

Explicación

Aquí mostraremos cada perspectiva de la función de llamada del sistema LSTAT ().

En la primera salida, ingresaremos un nombre de archivo sin su información de ruta. Como salida, obtendremos el uso del programa. El programa necesita un nombre/ruta de archivo de entrada como primer argumento.

En la siguiente salida, mostraremos la información sobre el archivo del dispositivo de bloque. Aquí los registros 5+0 en y 5+0, y el tipo de archivo de entrada es un dispositivo de bloque.

En la siguiente salida, crearemos un archivo llamado "papan_char_device_file"¿Qué tipo es un dispositivo de personaje?. La función LSTAT () lo ayudará a dar toda la información relacionada con este dispositivo de caracteres.

Después de eso, haremos un directorio llamado "habibpur"¿Qué tipo de archivo es un directorio. lstat () creará toda la información sobre este archivo.

A continuación, crearemos otro archivo llamado "papan_fifo_file"Cuyo tipo de archivo es FIFO/PIPO. Obtendremos la función LSTAT proporcionada información para el archivo como salida.

Después de eso, haremos un enlace simbólico llamado "puja.TXT"De un archivo llamado"avishek.TXT"Y obtenga la función LSTAT proporcionada información para el archivo como salida.

A continuación, verificaremos el tipo de archivo de "avishek.TXT,"Que es un archivo normal [ya creado en el paso anterior].

Y por último, crearemos otro archivo llamado " nadia_socket_file.calcetín”, Qué tipo de archivo es un socket, y obtenga toda la información detallada sobre este archivo.

Con la ayuda de la función LStat (), reconoceremos todos los archivos.

Conclusión

Aquí habremos mencionado todos los aspectos de la llamada del sistema de funciones LSTAT (). Al ver todas las características y el tipo de implementación de la función LSTAT (), podemos entender claramente que es una función de llamadas de sistema muy importante para obtener todos los atributos de un archivo en particular que hemos creado en nuestro sistema, y ​​el sistema responderá de acuerdo. al comando de función lstat ().