fstat, stat y lstat

La llamada al sistema fstat envía información de estado sobre el archivo asociado con un descriptor de archivo abierto. La información se escribe en una estructura, buf, cuya dirección se transmite a modo de parámetro.

Las librerias son:

#include <unistd.h>
#include <sys/stat.h>
#include <sys/type.h>

y la sintaxis:

fstat_sintaxis

tux_nota_1Las funciones relacionadas stat y lstat envían información de estado sobre el archivo nombrado. Generan los mismos resultados, salvo cuando el archivo es un enlace simbólico. lstat envía información sobre el propio vínculo, y stat envía información sobre el archivo al cual se refiere el vínculo.

Los miembros de la estructura stat, pueden variar dependiendo del sistema UNIX, pero aparecerán los que contiene la siguiente tabla:

fstat_tabla_1Los indicadores st_mode enviados en la estructura stat también tiene un número de macros asociados que están definidos en el archivo de cabecera sys/stat.h. Dichas macros incluyen nombres de permisos e indicadores de archivo, así como algunas máscaras para ayudar a realizar las comprobaciones de los tipos específicos y de los permisos.

Los indicadores de permisos son los mismos que para la llamada al sistema open descrita previamente. entre los indicadores de tipo archivo se encuentran:

  • S_IFBLK: La entrada es un dispositivo especial de bloque.
  • S_IFDIR: La entrada es un directorio.
  • S_IFCHR: La entrada es un dispositivo de carácter especial.
  • S_IFIFO: La entrada es un FIFO (First in, First out, denominado tubería).
  • S_IFREG: La entrada es un archivo regular.
  • S_IFLNK: La entrada es un vínculo simbólico.

Otros modos de indicación:

  • S_ISUID: La entrada tiene setUID en ejecución.
  • S_ISGID: La entrada tiene setGID en ejecución.

Entre las máscaras para interpretar los indicadores st_mode son:

  • S_IFMT: Tipo de archivo.
  • S_IRWXU: Permisos de lectura/escritura/ejecución para el usuario.
  • S_IRWXG: Permisos de lectura/escritura/ejecución para el grupo.
  • S_IRWXO: Permisos de lectura/escritura/ejecución para otros.

Hay algunos macros definidos para ayudar a determinar el tipo de archivos. Éstos comparan únicamente indicadores de modo debidamente enmascaradas con un indicador de dispositivo.

  • S_ISBLK: Comprueba la existencia de archivos de bloques especiales.
  • S_ISCHR: Comprueba la existencia de archivos de carácter especial.
  • S_ISDIR: Comprueba la existencia de archivos de carácter especial.
  • S_ISFIFO: Comprueba la existencia de FIFO.
  • S_ISREG: Comprueba la existencia de un archivo regular.
  • S_ISLNK: Comprueba la existencia de un vínculo simbólico.

Por ejemplo, para comprobar que un archivo no representa un directorio y que tiene permiso de ejecución para el propietario pero no dispone del resto de permisos, puede usar:

ejemplo_fstatatras

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.