⚙️GESTION DE ARCHIVOS
Última actualización
Última actualización
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).
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.
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.
La siguiente tabla describe brevemente las llamadas al sistema relacionadas con el manejo de archivos:
%eax | Name | %ebx | %ecx | %edx |
---|---|---|---|---|
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.
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.
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.
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.
Coloque la llamada al sistema sys_close() 6 en el EAX.
Coloque el descriptor de archivo en el EBX.
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 .
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