La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Llamadas al sistema del sistema de ficheros en POSIX Sistemas Operativos Ingeniería en Informática Área de Arquitectura de Computadores Universidad Carlos.

Presentaciones similares


Presentación del tema: "Llamadas al sistema del sistema de ficheros en POSIX Sistemas Operativos Ingeniería en Informática Área de Arquitectura de Computadores Universidad Carlos."— Transcripción de la presentación:

1 Llamadas al sistema del sistema de ficheros en POSIX Sistemas Operativos Ingeniería en Informática Área de Arquitectura de Computadores Universidad Carlos III de Madrid

2 Archivos Apertura de archivo  open Apertura de archivo  open Devuelve un descriptor o error (valor < 0) Devuelve un descriptor o error (valor < 0) Cerrar archivo  close Cerrar archivo  close Leer datos  read Leer datos  read read(descriptor, buffer, tamaño) read(descriptor, buffer, tamaño) Escribir datos  write Escribir datos  write write(descriptor, buffer, tamaño) write(descriptor, buffer, tamaño) Desplazar puntero acceso  lseek Desplazar puntero acceso  lseek lseek(descriptor, desplazamiento, desde) lseek(descriptor, desplazamiento, desde)

3 Directorios - #include Directorios - #include Abrir directorio  opendir(nombre_dir) Abrir directorio  opendir(nombre_dir) Devuelve un puntero a un struct DIR Devuelve un puntero a un struct DIR Cerrar directorio  closedir(struct DIR*) Cerrar directorio  closedir(struct DIR*) Recorrido de los elementos de un directorio: Recorrido de los elementos de un directorio: Elementos  struct dirent Elementos  struct dirent Leer siguiente entrada  readdir(struct DIR*) Leer siguiente entrada  readdir(struct DIR*) Si es la última devuelve NULL Si es la última devuelve NULL Volver a obtener primer elemento  rwinddir Volver a obtener primer elemento  rwinddir Obtener número de elemento actual  telldir Obtener número de elemento actual  telldir Desplazarse a un elemento  seekdir Desplazarse a un elemento  seekdir

4 struct dirent struct dirent { long d_ino; /* número i-nodo */ long d_ino; /* número i-nodo */ off_t d_off; /* despl. al siguiente dirent */ off_t d_off; /* despl. al siguiente dirent */ unsigned short d_reclen; /* long. de este registro */ unsigned short d_reclen; /* long. de este registro */ unsigned char d_type; /* tipo de fichero*/ unsigned char d_type; /* tipo de fichero*/ char d_name[256]; /* nombre del fichero */ char d_name[256]; /* nombre del fichero */};

5 Información de un archivo o directorio: stat - #include Información de un archivo o directorio: stat - #include La llamada al sistema stat permite obtener información de un archivo o directorio. La llamada al sistema stat permite obtener información de un archivo o directorio. stat(const char *path, struct stat *buf) stat(const char *path, struct stat *buf) Se debe pasar un puntero a una estructura stat existente, la función stat se encarga de rellenar los campos de la estructura para el archivo o directorio indicado. Se debe pasar un puntero a una estructura stat existente, la función stat se encarga de rellenar los campos de la estructura para el archivo o directorio indicado.

6 struct stat struct stat struct stat { dev_t st_dev; /* dispositivo */ dev_t st_dev; /* dispositivo */ ino_t st_ino; /* inodo */ ino_t st_ino; /* inodo */ mode_t st_mode; /* protección */ mode_t st_mode; /* protección */ nlink_t st_nlink; /* número de enlaces físicos */ nlink_t st_nlink; /* número de enlaces físicos */ uid_t st_uid; /* ID del usuario propietario */ uid_t st_uid; /* ID del usuario propietario */ gid_t st_gid; /* ID del grupo propietario */ gid_t st_gid; /* ID del grupo propietario */ dev_t st_rdev; /* tipo dispositivo (si es dev_t st_rdev; /* tipo dispositivo (si es dispositivo inodo) */ dispositivo inodo) */ off_t st_size; /* tamaño total, en bytes */ off_t st_size; /* tamaño total, en bytes */ unsigned long st_blksize; /* tamaño de bloque para el unsigned long st_blksize; /* tamaño de bloque para el sistema de ficheros de E/S */ sistema de ficheros de E/S */ unsigned long st_blocks; /* número de bloques asignados*/ unsigned long st_blocks; /* número de bloques asignados*/ time_t st_atime; /* hora último acceso */ time_t st_atime; /* hora último acceso */ time_t st_mtime; /* hora última modificación */ time_t st_mtime; /* hora última modificación */ time_t st_ctime; /* hora último cambio */ time_t st_ctime; /* hora último cambio */ }; };

7 stat.st_mode Sobre el campo st_mode se pueden utilizar varias macros: Sobre el campo st_mode se pueden utilizar varias macros: S_ISLNK(m) es un enlace simbólico? S_ISLNK(m) es un enlace simbólico? S_ISREG(m) un fichero regular? S_ISREG(m) un fichero regular? S_ISDIR(m) un directorio? S_ISDIR(m) un directorio? S_ISCHR(m) un dispositivo de caracteres? S_ISCHR(m) un dispositivo de caracteres? S_ISBLK(m) un dispositivo de bloques? S_ISBLK(m) un dispositivo de bloques? S_ISFIFO(m) una tubería nombrada (fifo)? S_ISFIFO(m) una tubería nombrada (fifo)? S_ISSOCK(m) un enchufe (socket)? S_ISSOCK(m) un enchufe (socket)?


Descargar ppt "Llamadas al sistema del sistema de ficheros en POSIX Sistemas Operativos Ingeniería en Informática Área de Arquitectura de Computadores Universidad Carlos."

Presentaciones similares


Anuncios Google