⚙️GESTION DE ARCHIVOS

El sistema considera cualquier dato de entrada o salida como flujo de bytes. Hay tres flujos de archivos estandar:

  • Entrada estandar (stdin).

  • Salida estandar (stdout).

  • Error estandar (stderr).

Descriptor de Archivo

Un descriptor de archivo es un numero entero de 16 bits asignado a un archivo como id de archivo. Cuando se crea un nuevo archivo o de abre un archivo existente, el decriptor de archivo se utiliza para acceder al archivo.

Decriptor de archivo de los flujos de archivo estandar: stdin, stdout, stderr son 0,1 y 2.

Puntero de Archivo

Un puntero especifica la ubicacion para una operacion de lectura/escritura posterior en el archivo en termino de bytes. Cada archivo se considera como secuencia de bytes. Cada archivo abierto esta asociado con un puntero de archivos que especifica un desplazamiento de bytes, en relacion con el comienzo del archivo. Cuando se abre un archivo el puntero se establece a cero.

Llamadas al sistema de manejo de archivos

La siguiente tabla describe brevemente las llamadas al sistema relacionadas con el manejo de archivos:

%eax
Name
%ebx
%ecx
%edx

2

sys_fork

struct pt_regs

-

-

3

sys_read

unsigned int

char *

size_t

4

sys_write

unsigned int

const char *

size_t

5

sys_open

const char *

int

int

6

sys_close

unsigned int

-

-

8

sys_creat

const char *

int

-

19

sys_lseek

unsigned int

off_t

unsigned int

Crear una rchivo y abrirlo:

  • Coloque la llamada al sistema sys_create() 8, en el registro EAX.

  • Ponga el nombre del archivo en registro EBX.

  • Coloque los permisos del archivo en registro ECX.

Abrir un archivo existente:

  • Coloque la llamada al sustema sys_open() numero 5, en EAX.

  • Ponga el nombre del archivo en el registro EBX.

  • Ponga el modo de acceso a archivos en el registro ECX.

  • Coloque los permisos de archivo en EDX.

Lectura de un archivo:

  • Coloque la llamada al sistema sys_read() 3 en EAX.

  • Colocar el descriptor en EBX.

  • Coloque el puntero en el bufer de entrada en el registro ECX.

  • Coloque el tamano del bufer, es decir, el numero de bytes para leer, en el registro EDX.

Escribir en un archivo:

  • Coloque la llamada sys_write() 4 en EAX.

  • Coloque el desccriptor de archivo en EBX.

  • Coloque el puntero de salida en ECX.

  • Coloque el numero de bytes a escribir en el EDX.

Escribir un archivo:

  • Coloque la llamada al sistema sys_close() 6 en el EAX.

  • Coloque el descriptor de archivo en el EBX.

Actualizacion de un archivo:

  • Coloque la llamada sys_lseek() 19, en el EAX.

  • Coloque el descriptor del archivo.

  • Ponga el valor de compensacion en el registro ECX,

  • Coloque la posicion de referencia para el desplazamiento en el EDX.

La posicion de referencia podria hacer:

  • Comienzo del archivo - value1

  • Posicion actual - value2

  • Fin del archivo - value3

EJEMPLO:

El siguiente programa crea y abre un archivo llamado myfile.txt y escribe un texto 'Bienvenido ' en este archivo. A continuación, el programa lee el archivo y almacena los datos en un búfer llamado info . Por último, muestra el texto almacenado en info .

Última actualización