Las llamadas del sistema proporcionadas por el núcleo de Linux están expuestas en el lenguaje de programación C a través de GLIBC. Cuando se usa una llamada del sistema, se está comunicando al sistema operativo y, al devolver, el sistema operativo se comunica a través de los parámetros que se devuelven a las funciones de llamadas del sistema (valores de retorno).
Llamada del sistema de estadísticas:
STAT System Call es una llamada del sistema en Linux para verificar el estado de un archivo, como para verificar cuándo se accedió al archivo. La llamada del sistema stat () realmente devuelve los atributos del archivo. Los atributos de archivo de un inodo se devuelven básicamente por la función stat (). Un inodo contiene los metadatos del archivo. Un inodo contiene: el tipo de archivo, el tamaño del archivo, cuando se accedió al archivo (modificado, eliminado) que es sellos de tiempo, y la ruta del archivo, el ID de usuario y la ID de grupo, los enlaces del archivo y dirección física del contenido del archivo.
Podemos decir que inode contiene todos los datos requeridos para la llamada del sistema STAT () y es el número de índice para el archivo que se guarda en la tabla de inodo. Cada vez que crea un archivo que se crea un número de inodo para ese archivo. Usando la llamada del sistema STAT, las tablas del sistema se pueden ver.
Sintaxis de la llamada del sistema C:
Para usar la llamada del sistema STAT en el lenguaje de programación C, debe incluir el siguiente archivo de encabezado:
#incluirSTAT se usa para obtener el estado de un archivo. La sintaxis de la llamada del sistema de estadísticas C puede no ser la misma para cada sistema operativo. En Linux, la sintaxis para la llamada del sistema STAT es la siguiente:
int stat (const char *ruta, struct stat *buf)El tipo de retorno de la función en int, si la función se ejecuta correctamente, se devuelve 0 si hay algún error, -1 se devolverá.
Aquí Const char *ruta Especifica el nombre del archivo. Si la ruta del archivo es un enlace simbólico, entonces debe especificar el enlace en lugar del nombre del archivo.
Luego, en la función tenemos una estructura de estadísticas en la que se almacenan los datos o información sobre el archivo que usa un puntero llamado bufón, que se pasa como paramtéter y se llena durante la ejecución de la llamada y el usuario legible después de la llamada.
Estructura de estadísticas:
La estructura de estadísticas que se define en el archivo de encabezado contiene los siguientes campos:
estadística de estructuraDescripción:
Banderas | Descripción | Valor de bandera |
---|---|---|
S_ifmt | Un bitmask utilizado para obtener el valor de modo de un archivo | 0170000 |
S_ifsock | Un archivo constante de socket | 0140000 |
S_iflink | Un archivo constante de enlace simbólico | 0120000 |
S_ifreg | Archivo constante para el archivo regular | 0100000 |
S_ifblk | Archivo constante para el archivo de bloque | 0060000 |
S_ifdir | Archivo constante para el archivo de directorio | 0040000 |
S_ifchr | Archivo constante para el archivo de caracteres | 0020000 |
S_ififo | Un archivo constante de FIFO | 0010000 |
S_isuid | Establecer bit de identificación de usuario | 0004000 |
S_isgid | Establecer bit de identificación de grupo | 0002000 |
S_isvtx | Bit pegajoso que indica texto compartido | 0001000 |
S_irwxu | Permisos del propietario (leer, escribir, ejecutar) | 00700 |
S_irusr | Leer permisos para el propietario | 00400 |
S_iwusr | Permisos de escritura para el propietario | 00200 |
S_ixusr | Ejecutar permisos para el propietario | 00100 |
S_irwxg | Permisos grupales (leer, escribir, ejecutar) | 00070 |
S_IRGRP | Leer permisos para el grupo | 00040 |
S_iwgrp | Permisos de escritura para el grupo | 00020 |
S_ixgrp | Ejecutar permisos para el grupo | 00010 |
S_irwxo | Permisos para otros (leer, escribir, ejecutar) | 00007 |
S_iroth | Leer permisos para otros | 00004 |
S_iwoth | Permisos de escritura para otros | 00002 |
S_ixoth | Ejecutar permisos para otros | 00001 |
Cómo usar la llamada del sistema STAT:
El siguiente ejemplo muestra cómo usar la llamada del sistema STAT en el lenguaje de programación C en Linux, Ubuntu.
EJEMPLO 1:
En el siguiente código vamos a encontrar el modo de un archivo:
CÓDIGO:
#incluirCompilar y ejecutar el programa devuelve como se muestra a continuación:
En este código, hemos pasado el nombre del archivo en la llamada del sistema STAT y luego el puntero a la estructura de stat que es sfile. El puntero a STAT struct se usa para acceder a ST_MODE que muestra el modo del archivo usando la instrucción PRINTF.
Se utiliza el archivo de encabezado para que pueda usar la llamada del sistema STAT. El archivo de encabezado es el archivo de biblioteca de entrada/salida estándar para que pueda usar printf o scanf en su código C.
Ejemplo 2:
En el siguiente código, obtendremos información sobre el archivo utilizando la llamada del sistema STAT:
CÓDIGO:
#incluirPRODUCCIÓN:
En el código C anterior, hemos ingresado el nombre del archivo y si el archivo no existe, la ejecución del programa se detendrá. Esto se demuestra en la siguiente imagen:
Si nuestro archivo existe, se llamará a la función sfile (n) en la que hemos pasado el nombre del archivo. Dentro de la función, en primer lugar, hemos utilizado la llamada del sistema STAT, si STAT () devuelve -1, entonces debe ser cualquier error para que se imprima un mensaje y se detenga la ejecución del programa.
Luego, en la declaración printf, hemos utilizado el nombre de la función y el separador de puntos para acceder a los miembros de los datos de estadística.
Luego, para el modo de archivo, hemos accedido a las macros o banderas de ST_MODE. Aquí se utiliza lógico y operador para imprimir los modos respectivos. Hemos verificado los permisos para el usuario, el grupo y otros para el archivo especificado (nombre del archivo ingresado por el usuario).
Con esto, puede ver cómo usar la llamada del sistema STAT desde el lenguaje de programación C para obtener información del kernel del sistema operativo sobre archivos. Si tiene una pregunta, siéntase gratis Cuéntanos a través de la sección de comentarios.