Función Fstat en C

Funcion Fstat En C



La función fstat() llama al sistema para devolver la información (sobre algún archivo) que depende del descriptor de ese archivo. Esta función obtiene la información del archivo que está asociado con el descriptor de archivo, también conocido como 'fildes', y luego escribe esta información en la ubicación de la memoria a la que apunta el búfer. El tipo de retorno de esta función es un número entero. Devuelve el valor “0” si el programa se ejecuta con éxito. De lo contrario, devuelve un '-1' a la función en caso de ejecución fallida. El error de ejecución de esta función puede deberse a algunas razones específicas, como si los archivos de la función tienen un descriptor no válido para el archivo, si el error de lectura para la entrada y la salida se produce desde el archivo y si la ubicación de la memoria (estructura) donde el búfer apunta a escribir la información del archivo no tiene suficiente memoria asignada para el tamaño del archivo.

Procedimiento

Este artículo sigue el orden secuencial para implementar la función fstat() para obtener la información del archivo. Primero aprendemos la sintaxis de esta función, los parámetros necesarios para esta función. Luego, usamos esta sintaxis para ejecutar algunos ejemplos de la función fstat().







Sintaxis

El método para declarar la función fstat() que permite el acceso del programa a la información del archivo se menciona en la siguiente línea:



$ #incluir
$ En t estado ( En t filas , estructura estadística * buf ) ;

Siempre que tengamos que llamar a la función en nuestro programa, primero debemos importar los archivos de encabezado que admiten esta función como 'sys/stat.h'. El tipo de retorno de la función siempre es 'int' y el parámetro incluye 'fildes' con el tipo de datos 'int'. Fildes es un descriptor del archivo del que queremos conocer la información. Otro parámetro que se le da a la función es el puntero “buf”. Es un puntero de “struct stat” que apunta hacia la estructura donde queremos almacenar los datos sobre el archivo. Esta es una breve descripción de los parámetros de entrada para la función fstat().



Ejemplo

Usamos la descripción mencionada anteriormente y ejecutamos un programa para obtener la información sobre cualquier archivo específico a través de nuestro programa. Escribimos este programa en el compilador Microsoft Visual Studio C para la ejecución. Comenzamos con el ejemplo creando primero un proyecto y luego agregándolo a los repositorios de C en Visual Studio. Para agregar el proyecto a los archivos C, incluimos el '.c' con el nombre del proyecto y lo agregamos al archivo fuente del proyecto. El siguiente paso después de la creación del proyecto es llamar a todas las bibliotecas requeridas para las funciones que podemos usar más adelante en el programa. Dado que estamos implementando el ejemplo de la función fstat() en este artículo, debemos incluir el archivo de encabezado 'sys/stat.h'. Para la información del archivo, necesitamos saber el tipo de dispositivo donde existe el archivo. Para conocer el tipo de datos del dispositivo, incluimos el encabezado “type. h” en el programa.





La información del archivo debe incluir la hora en que se abrió el archivo por última vez y la modificación que se hizo en él. Para acceder a estas funciones de llamada de tiempo, agregamos el archivo de encabezado 'times. h” y el “fcntl. h” encabezado para las funciones de permisos de archivos. El último encabezado 'stdio. h” también se incluye en el programa para llamar a los métodos printf() y scanf() en el programa. Los archivos de encabezado que discutimos para incluir en el programa son los siguientes:

$ #include
$ #incluir
$ #incluye
$ #incluir
$ #include

Después de que los archivos de encabezado mencionados anteriormente se hayan importado con éxito al programa, ahora construimos el programa para obtener la información sobre un archivo específico. Declaramos la función que tiene el tipo de retorno como 'int' con el nombre 'principal'. En esta función principal, declaramos una matriz 'char' y le asignamos el nombre del archivo para el que necesitamos saber una información. Luego, definimos una 'información estadística' con el tipo de datos 'struct'. Esta estructura es un lugar donde almacenamos la información sobre el archivo.



Luego, definimos otra variable con el nombre 'file_descriptor' con el tipo de datos como 'entero'. En la 'condición if', solicitamos permiso para las operaciones de lectura y escritura del archivo si existe, pasando el 'S_IWUSR' y el nombre de la matriz a la función 'crear ()' que solicita los permisos para el archivo si existe o crear un nuevo archivo de lo contrario. Pasamos esta función create() a la 'condición if', que establece que si el valor de la función create() es menor que cero, se crea un error que indica que se debe crear el archivo. Si fstat() con parámetros como 'file_descriptor' e 'información' y 'la dirección de la ubicación donde se almacena la información del archivo' no es igual a cero, mostramos el valor devuelto por fstat() que es la información del archivo. . E imprimimos la información en forma de atributos, p. ID del dispositivo en el que se almacena el archivo, el número de Inode del dispositivo, el modo de protección del archivo, la ID del usuario, la ID del grupo y el número del enlace (formato duro).

Después de mostrar estos atributos, salimos de las declaraciones y cerramos el archivo usando el método close(). Luego, desvincule el archivo llamando al método unlink().

#include
#incluir
#incluye
#incluir
#include

principal ( ) {
carbonizarse formación [ ] = 'amp.archivo' ;
estructura información estadística ;
En t descriptor de archivo ;
si ( ( descriptor de archivo = hecha ( formación , S_IWUSR ) ) < 0 )
perror ( 'error de creación ()' ) ;
más {
si ( estado ( descriptor de archivo , & información ) != 0 )
perror ( 'error fstat()' ) ;
más {
pone ( 'valores fstat():' ) ;
imprimir ( 'inodo: %d \norte ' , ( En t ) información st_ino ) ;
imprimir ( ' id_dispositivo: %d \norte ' , ( En t ) información st_dev ) ;
imprimir ( ' modo de dispositivo: %08x \norte ' , información modo_st ) ;
imprimir ( ' no_of_hard_links: %d \norte ' , información st_nlink ) ;
imprimir ( ' u_id: %d \norte ' , ( En t ) información st_uid ) ;
imprimir ( ' g_id: %d \norte ' , ( En t ) información st_gid ) ;
}
cerca ( descriptor de archivo ) ;
desconectar ( formación ) ;
}
}

El programa primero accederá al permiso para la operación del archivo y luego leerá los datos y los escribirá en la ubicación de memoria asignada. Los atributos que le dimos al programa para mostrar desde el archivo se muestran en la salida.

Conclusión

Usamos la función fstat() para acceder a la información del archivo. Primero aprendimos la sintaxis de la función fstat() explicada con la descripción completa de los parámetros de la función. Luego, escribimos un programa para esta función donde primero accedimos al permiso del propietario de nuestro archivo y luego leímos el archivo y mostramos los atributos que queríamos de la información del archivo. Hicimos todo lo posible para permitirle comprender el concepto de fstat() y esperamos que lo ayude en sus programas.